これは、他のいくつかの質問での議論から派生したものです。
非常に長い文字列を大量に解析する必要があるとします。各文字列には、double
空白で区切られた一連のs(もちろんテキスト表現)が含まれています。を解析double
して。にする必要があり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
、指定された部分文字列内でのみ検索しますが、実際にその部分文字列を最初に抽出せずに、部分文字列からdoubleを解析する方法を見つけることができませんでした。
誰かアイデアがありますか?