-4

C++ クラスを C# に移植していますが、問題があります。

SpanIncluded に相当するものを見つけたいと思います。

ここに私のcppコードがあります:

while (Notes.Mid(j,1).SpanIncluding("0123456789").IsEmpty()!=NULL){}

誰でも私を助けてくれますか?

4

2 に答える 2

2

SpanIncluding文字列の先頭から一致を開始し、一致しない最初の文字が見つかったときに停止すると思います。

したがって、一般的な場合の 1 つの定式化は次のようになります。

string match = new string(someString.ToCharArray().
               TakeWhile(c => "0123456789".Contains(c)).ToArray());

(または正規表現を使用した同等のもの)。

ただし、質問に示されている例では、文字が 1 つしかない>= '0'ため、この文字がandであるかどうかのテストに要約される可能性があり<= '9'ます。

while(char.IsDigit(Notes[j])) { ... };
于 2012-11-11T19:29:32.527 に答える
1

I found the MSDN page for SpanIncluding, and it seems like a ridiculously specific function. I can't really understand what it tries to solve, since it has some strange caveats.

LINQ would be one way of implementing it:

string text = "2334562";
IEnumerable<char> spannedChars = text.TakeWhile(c => "1234567890".Contains(c));

This is a more direct port of SpanIncluding than queen3's option, if I understand the MSDN page correctly, because the result set should stop the minute it hits a character not in the spanning string.

于 2012-11-11T19:26:49.330 に答える