我正在編寫自定義字符串拆分。它將在一個點(.
)之前進行分割,前面沒有奇數個反斜槓(\
)。快速自定義字符串拆分
«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的,並記錄開始,字符串的結束,並使用string.substring創建新的字符串。這確實很多,幾乎是一樣快string.split但我已經加入我的調整。(將添加代碼)
「如果有,將重新使用原來的字符串(速度)的子串」 - 你不能真正實現這一點,如果它不是如何.NET將已表現。 – millimoose
你是否會進入這種情況:'aeiou \ .bcde \\。opz'?或者你只會有一個'。'在你的字符串? – Jastill
多個點(分隔符),偶爾還有逃脫的點\。 (非分隔符)。有時\ \以及。 –