我正在编写自定义字符串拆分。它将在.
前面没有奇数个反斜杠 ( \
) 的点 ( ) 上分割。
«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;
}
它现在使用 List 而不是 LinkedList,并记录子字符串的开头和结尾,并使用 string.substring 来创建新的子字符串。这做了很多,几乎和 string.split 一样快,但我已经添加了我的调整。(将添加代码)