【问题标题】:Looking for SpanIncluding equivalent in C# [closed]在 C# 中寻找 SpanIncluding 等价物 [关闭]
【发布时间】:2012-11-11 19:15:53
【问题描述】:

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

我想找到一个等效的 SpanIncluding。

这是我的 cpp 代码:

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

有人可以帮帮我吗?

【问题讨论】:

  • 我们是否需要猜测 SpanIncluding 的作用?在我看来,它不是标准功能。
  • 简要说明你想做什么而不是 SpanIncluding。
  • 我在我的 C++ 书籍中找不到 MidSpanIncluding。它来自哪个标准库?

标签: c# c++ string mfc


【解决方案1】:

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

所以一般情况下的一种表述是这样的:

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

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

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

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

【讨论】:

  • +1 用于破译该死的 sn-p 实际在做什么。
【解决方案2】:

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

LINQ 是实现它的一种方式:

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

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

【讨论】:

  • Hello Spaninclude 是一个 MFC 函数。
  • 是的,我知道,我链接到它的 MSDN 页面。这并没有改变它的逻辑非常复杂的事实。它在 MSDN 上的描述看起来不像是函数描述,更像是大一的编程练习。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
  • 2015-10-14
  • 2019-06-23
  • 2018-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多