-4

我正在将 C++ 类移植到 C#,但遇到了困难。

我想找到一个相当于 SpanIncluding 的东西。

这是我的 cpp 代码:

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

任何人都可以帮助我吗?

4

2 回答 2

2

我相信SpanIncluding从字符串的开头开始匹配,当找到第一个不匹配的字符时停止。

因此,一般情况下的一种表述是:

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

(或使用正则表达式的等价物)。

但是,在问题中给出的示例中,只有一个字符,因此整个事情可能归结为测试该字符是否为>= '0'and <= '9'

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

我找到了SpanIncluding的 MSDN 页面,这似乎是一个可笑的特定功能。我无法真正理解它试图解决什么,因为它有一些奇怪的警告。

LINQ 将是实现它的一种方式:

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

如果我正确理解了 MSDN 页面,这是SpanIncluding比queen3 选项更直接的端口,因为结果集应该在它遇到不在跨越字符串中的字符时停止。

于 2012-11-11T19:26:49.330 回答