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

时间:2011-01-20 15:20:39

标签: c# string

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

小工具PO NO。 1234
身体PO NO。 123456个
永PO号12345-2
坚果PO NO。 1-234-56-7

“PO NO。”将永远是相同的,所以我只想在“NO。”中的尾随空格之后提取数据,并将其转换为另一个字符串,以便我可以获得数字数据(即采购订单#)。

感谢。

6 个答案:

答案 0 :(得分:2)

使用您的实际字符串表示形式,您在每个文本部分后面都有一个空格......所以提供另一条路线......

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

答案 1 :(得分:1)

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

        string orderNumb = aLine.Substring(aLine.LastIndexOf(refString) + refString.Length).Trim();

答案 2 :(得分:1)

您可以使用正则表达式:

       Match m = Regex.Match(str, @"PO NO\. (?<PO>\d+)$");
       string poNumber = m.Groups["PO"].Value;

答案 3 :(得分:1)

尝试String.Split

strOrder = "Widget PO NO. 1234";
arSplit = strOrder.Split(" PO NO. ");

这将创建一个数组arsplit[],包含PO NO之前的所有内容。在arSplit[0]以及arsplit[1]之后的所有内容。

答案 4 :(得分:1)

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

[.\W]*PO NO\.\W*([\d-]*)

这是一些演示代码(C#):

string[] strings = new string[] {"Widget PO NO. 1234",
                            "Body PO NO. 123456",
                            "Wing PO NO. 12345-2",
                            "Nut PO NO. 1-234-56-7"};
Regex regex = new Regex(@"[.\W]*PO NO\.\W*([\d-]*)");
Match match;

foreach (string s in strings)
{
    match = regex.Match(s);
    Console.WriteLine(match.Groups[1].Value);
}

答案 5 :(得分:0)

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