【问题标题】:Get all numbers within a string c# regex获取字符串中的所有数字 c# regex
【发布时间】:2014-03-28 05:33:32
【问题描述】:

我有一个字符串,它的值可以是

“条码:X 2 4688000000000"

"条码:X 10 1234567890123"

等等

我要检索数量值(即2、10)和条形码值(即4688000000000、1234567890123)

我尝试了以下代码 -

string[] QtyandBarcode = Regex.Split(NPDVariableMap.NPDUIBarcode.DisplayText, @"\D+");

但是当我执行时,我将 QtyandBarcode 作为具有 3 个值的字符串数组 -

""
“2”
"4688000000000"

如何防止空值被存储?

【问题讨论】:

  • 您要从“条形码:X 2 4688000000000”字符串中检索 2 和 4688000000000 吗?

标签: c# .net regex string int


【解决方案1】:

你可以这样做:

MatchCollection m = Regex.Matches(NPDVariableMap.NPDUIBarcode.DisplayText, @"\d+");

var x = (from Match a in m select a.Value).ToArray();

【讨论】:

    【解决方案2】:
    string[] QtyandBarcode = Regex.Split(NPDVariableMap.NPDUIBarcode.DisplayText, @"\D+").Where(s => !string.IsNullOrEmpty(s)).ToArray();
    

    现在可以了

    string qty = QtyandBarcode[0];
    string barcode= QtyandBarcode[1];
    

    【讨论】:

    • 这不起作用。我收到一条错误消息,提示“字符串 [] 不包含 'Where' 的定义”
    • 你需要Linq,在你的代码文件顶部添加using System.Linq;
    【解决方案3】:

    这个简单的方法怎么样。

    string[] parts =  NPDVariableMap.NPDUIBarcode.DisplayText.split(' ');  //split on space
    string qty = parts[1];
    string barcode = parts[2];
    

    【讨论】:

    • 字符串语法将来可能会改变,我只想捕获数字。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多