"\v"
は、元の文字列の 1 つではなく 2 つの文字です (\
リテラル C# 文字列のようにエスケープ文字としてカウントされません)。
リテラル"\v"
で分割する必要があります。つまり、文字列を取る Split のオーバーロードを指定する必要があります。
string[] split = narrative.Split(new string[] {"\\v"}, StringSplitOptions.None);
「\」文字を「\\」でエスケープしなければならなかったことに注意してください
あなた'\v'
は 2 文字ではなく、1 つの制御文字です。
あなたの質問自体は少し誤解を招くと思います...
文字列の例を C# に入力すると、実際には予想どおりに機能します。これ \v
は、逐語的な C# 文字列が特殊文字にエスケープされるためです。
string test = " The objective for test.\vVision\v* Deliver a test goals\v** Comprehensive\v** Control\v* Alignment with cross-Equities strategy\vApproach\v*An acceleration ";
char[] delimiters = new char[] { '\v' };
Console.WriteLine(test.Split(delimiters).Length); // Prints 8
ただし、実際の文字列には、エスケープされた \v ではなく、実際にバックスラッシュ-v が含まれていると思います。
string test = " The objective for test.\\vVision\\v* Deliver a test goals\\v** Comprehensive\\v** Control\\v* Alignment with cross-Equities strategy\\vApproach\\v*An acceleration ";
char[] delimiters = new char[] { '\v' };
Console.WriteLine(test.Split(delimiters).Length); // Prints 1, like you say you see.
したがって、文字列の配列を使用して文字列を分割することにより、上記のように修正できます。
string test = " The objective for test.\\vVision\\v* Deliver a test goals\\v** Comprehensive\\v** Control\\v* Alignment with cross-Equities strategy\\vApproach\\v*An acceleration ";
string[] delimiters = new [] { "\\v" };
Console.WriteLine(test.Split(delimiters, StringSplitOptions.None).Length); // Prints 8