在C#中寻找SpanIncluding等价物

时间:2012-11-11 19:15:53

标签: c# c++ string mfc

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

我想找到一个等价的SpanIncluding。

这是我的cpp代码:

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

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:2)

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

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

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

(或使用正则表达式的等效词)。

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

while(char.IsDigit(Notes[j])) { ... };

答案 1 :(得分:1)

我找到了SpanIncluding的MSDN页面,它似乎是一个非常具体的功能。我无法真正理解它试图解决的问题,因为它有一些奇怪的警告。

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

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

如果我正确理解MSDN页面,这是{3}选项的更直接端口,因为结果集应该在它击中不在生成字符串中的字符时停止。