我正在尝试解析一个大文本字符串。我需要将原始字符串分成 15 个字符的 block (下一个 block 可能包含空格,因此使用了 trim 函数)。我正在使用两个字符串,原始字符串和临时字符串。此临时字符串用于存储每个 15 长度的 block 。 我想知道我是否会陷入性能问题,因为字符串是不可变的。这是代码:
string original = "THIS IS SUPPOSE TO BE A LONG STRING AN I NEED TO SPLIT IT IN BLOCKS OF 15 CHARACTERS.SO";
string temp = string.Empty;
while (original.Length != 0)
{
temp = original.Substring(0, 14).Trim();
original = original.Substring(14, (original.Length -14)).Trim();
}
感谢您的反馈,以便找到实现此功能的最佳方法。
最佳答案
你会像这样获得稍微好一点的性能(但性能提升是否显着完全是另一回事):
for (var startIndex = 0; startIndex < original.Length; startIndex += 15)
{
temp = original.Substring(startIndex, Math.Min(original.Length - startIndex, 15)).Trim();
}
这样性能更好,因为您没有在每次循环迭代中复制原始字符串的最后 15 个字符。
编辑
要将索引推进到下一个非空白字符,您可以这样做:
for (var startIndex = 0; startIndex < original.Length; )
{
if (char.IsWhiteSpace(string, startIndex)
{
startIndex++;
continue;
}
temp = original.Substring(startIndex, Math.Min(original.Length - startIndex, 15)).Trim();
startIndex += 15;
}
关于c# - 使用 String.Substrings,是否缺乏性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8272479/