这已经被问了几种不同的方式,但我正在与另一位开发人员讨论“我的方式”与“你的方式”。语言是 C#。
我想解析一个管道分隔的字符串,其中每个块的前 2 个字符是我的标签。
规则。不是我的规则,而是我被赋予并且必须遵守的规则。我无法更改字符串的格式。这个函数可能会被调用很多次,所以效率是关键。我需要保持很简单。我正在寻找的输入字符串和标签可能/将在运行时更改。
输入字符串示例:AOVALUE1|ABVALUE2|ACVALUE3|ADVALUE4 我可能需要值的示例标签:AB
我根据分隔符将字符串拆分为一个数组,并在每次调用函数时循环遍历该数组。然后我查看前 2 个字符并返回减去前 2 个字符的值。
“其他人”的方法是获取字符串并使用 IndexOf 和 SubString 的组合来找到我正在寻找的字段的起点和终点。然后再次使用 SubString 提取减去前 2 个字符的值。所以他会说 IndexOf("|AB") 在字符串中找到然后下一个管道。这将是开始和结束。然后SubString那个出来。
现在我应该认为 IndexOf 和 SubString 每次都会在逐个字符级别解析字符串,因此这比使用大块并读取字符串减去前 2 个字符的效率要低。或者有没有比我们俩提议的更好的方法?