这是从其他一些问题的讨论中衍生出来的。
假设我必须解析大量非常长的字符串。每个字符串都包含一个double
由空格分隔的 s 序列(当然是在文本表示中)。我需要将double
s 解析为List<double>
.
标准解析技术(使用string.Split
+ double.TryParse
)似乎很慢:对于每个数字,我们需要分配一个字符串。
我试图使它成为类似 C 的旧方式:计算包含数字的子字符串的开头和结尾的索引,并“就地”解析它,而不创建额外的字符串。(见http://ideone.com/Op6h0,下面显示了相关部分。)
int startIdx, endIdx = 0;
while(true)
{
startIdx = endIdx;
// no find_first_not_of in C#
while (startIdx < s.Length && s[startIdx] == ' ') startIdx++;
if (startIdx == s.Length) break;
endIdx = s.IndexOf(' ', startIdx);
if (endIdx == -1) endIdx = s.Length;
// how to extract a double here?
}
有一个重载string.IndexOf
,仅在给定的子字符串中搜索,但我找不到从子字符串中解析双精度的方法,而没有先实际提取该子字符串。
有人有想法吗?