从C#中的字符串中提取采购订单,并将其放入另一个字符串中

从C#中的字符串中提取采购订单,并将其放入另一个字符串中,c#,string,C#,String,我将数据存储在字符串中,需要提取并转换为另一个字符串。我的字符串数据如下所示: 采购订单编号1234 车身采购订单号123456 永保12345-2号 螺母PO编号1-234-56-7 “PO NO.”将始终是相同的,因此我只想提取“NO.”中尾随空格后的数据,并将其转换为另一个字符串,以便获得数字数据(即采购订单#) 谢谢。您可以使用正则表达式: const string refString = "PO NO."; string aLine = "Widget

我将数据存储在字符串中,需要提取并转换为另一个字符串。我的字符串数据如下所示:

采购订单编号1234
车身采购订单号123456
永保12345-2号
螺母PO编号1-234-56-7

“PO NO.”将始终是相同的,因此我只想提取“NO.”中尾随空格后的数据,并将其转换为另一个字符串,以便获得数字数据(即采购订单#)


谢谢。

您可以使用正则表达式:

        const string refString = "PO NO.";
        string aLine = "Widget PO NO. 1234";

        string orderNumb = aLine.Substring(aLine.LastIndexOf(refString) + refString.Length).Trim();
       Match m = Regex.Match(str, @"PO NO\. (?<PO>\d+)$");
       string poNumber = m.Groups["PO"].Value;
Match m=Regex.Match(str,@“采购订单号”(?\d+)$);
字符串poNumber=m.Groups[“PO”].值;

您可以使用正则表达式:

       Match m = Regex.Match(str, @"PO NO\. (?<PO>\d+)$");
       string poNumber = m.Groups["PO"].Value;
Match m=Regex.Match(str,@“采购订单号”(?\d+)$);
字符串poNumber=m.Groups[“PO”].值;
试试:

这将创建一个数组
arsplit[]
,其中包含
arsplit[0]
中订单号之前的所有内容,以及
arsplit[1]
中订单号之后的所有内容,请尝试:

string order = orders.Split(" ")[3];

这将创建一个数组
arsplit[]
,其中包含
arsplit[0]
中订单号之前的所有内容,以及
arsplit[1]
中订单号之后的所有内容。使用正则表达式提取所需的零件。此正则表达式将返回分组结果:

string order = orders.Split(" ")[3];
[.\W]*PO NO\.\W*([\d-]*)
下面是一些演示代码(C#):


使用正则表达式提取所需的零件。此正则表达式将返回分组结果:

[.\W]*PO NO\.\W*([\d-]*)
下面是一些演示代码(C#):


使用实际的字符串表示法,在每个文本部分后面都有一个空格…因此要提供另一个路由

String rawPO = "Body PO NO. 123456";
String trimmedPO = rawPO.Remove(0, rawPO.LastIndexOf(" ")).Trim();

使用实际的字符串表示法,在每个文本部分后面都有一个空格…因此要提供另一个路由

String rawPO = "Body PO NO. 123456";
String trimmedPO = rawPO.Remove(0, rawPO.LastIndexOf(" ")).Trim();

Regex真的太贵了。这里不需要。Regex真的太贵了。这里不需要。Regex真的太贵了。这里不需要。Regex真的太贵了。这里不需要。虽然这取决于类型名称始终是一个单词,所以我会小心处理(尽管如果您修改它,使其没有硬编码的
3
,而是查找有多少部分,我想这是可以的)。@JYL:我只是处理提供的数据。如果可能的话,只需使用[array.Count-1]就可以了。虽然这取决于类型名称始终是一个单词,所以我会小心处理这个问题(尽管如果你修改它,使它没有硬编码的
3
,而是查找有多少部分,我想也可以)。@JYL:我只是在处理提供的数据。如果可以使用额外的空格,只需使用[array.Count-1]。