c# - 使用 String.Substrings,是否缺乏性能?

标签 c# performance

我正在尝试解析一个大文本字符串。我需要将原始字符串分成 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/

相关文章:

c# - 启用 ASP.Net Core session 锁定?

c# - 比较通用字段

c# - Entity Framework 4.1 POCO - 多对多加载

R计算: AMD or Intel?

performance - “共享”或 'cache' 仅由不明确类型参数化的表达式?

c# - 是否可以使用不同的 key 对签署已签名的 .net dll?

c# - HandleError 和 ASP.MVC 中的强类型布局

mysql - 任何适用于 Windows 的 MySQLTuner 等效/替代品?

javascript - 为什么在 javascript 中计算斐波那契比在 haskell 中更快?

javascript - 用常量替换字符串来优化 Javascript 代码是否值得?