カスタム文字列分割を書いています。.
奇数のバックスラッシュ ( ) が前にないドット ( ) で分割されます\
。
«string» -> «IEnemerable<string>»
"hello.world" -> "hello", "world"
"abc\.123" -> "abc\.123"
"aoeui\\.dhtns" -> "aoeui\\","dhtns"
元の文字列を(速度のために)再利用する部分文字列があるかどうか、またはこれを高速に実行できる既存の分割があるかどうかを知りたいですか?
input.Split('.')
これは私が持っているものですが、 //入力が文字列の場合よりも 2 ~ 3 倍遅くなります。(私はそれが(もう少し複雑な問題であることは知っていますが、それほどではありません)
public IEnumerable<string> HandMadeSplit(string input)
{
var Result = new LinkedList<string>();
var word = new StringBuilder();
foreach (var ch in input)
{
if (ch == '.')
{
Result.AddLast(word.ToString());
word.Length = 0;
}
else
{
word.Append(ch);
}
}
Result.AddLast(word.ToString());
return Result;
}
LinkedList の代わりに List を使用し、部分文字列の最初と最後を記録し、string.substring を使用して新しい部分文字列を作成します。これは多くのことを行い、string.split とほぼ同じ速度ですが、調整を加えました。(コードを追加します)