Przetwarzaj bez podziału łańcucha

To spin-off z dyskusji winne pytanie.

Przypuśćmy, że muszę przeanalizować ogromną liczbę bardzo długich łańcuchów. Każdy ciąg zawiera sekwencjędoubles (oczywiście w reprezentacji tekstu) oddzielone białymi znakami. Muszę przeanalizowaćdoubles doList<double>.

Standardowa technika parsowania (przy użyciustring.Split + double.TryParse) wydaje się być dość powolny: dla każdej liczby musimy przydzielić ciąg.

Próbowałem uczynić go starym sposobem podobnym do C: obliczyć indeksy początku i końca podciągów zawierających liczby i przeanalizować je „na miejscu”, bez tworzenia dodatkowego ciągu. (Widziećhttp://ideone.com/Op6h0, poniżej pokazano odpowiednią część.)

<code>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?
}
</code>

Jest przeciążeniestring.IndexOf, przeszukując tylko podany podłańcuch, ale nie udało mi się znaleźć metody parsowania podwojnego podłańcucha, bez wcześniejszego wyodrębnienia tego podciągu.

Czy ktoś ma pomysł?

questionAnswers(2)

yourAnswerToTheQuestion