2011-01-20 40 views
0

我將數據存儲在需要提取並轉換爲另一個字符串的字符串中。我的字符串數據如下所示:從C#中的字符串中提取採購訂單#並將其放入另一個字符串中

Widget PO NO。 1234
身體PO NO。 123456
Wing PO NO。 12345-2
Nut PO NO。 1-234-56-7

「PO NO。」將始終保持不變,所以我只想在「NO。」中的尾部空格後面提取數據,並將其轉換爲另一個字符串,以便可以獲得數字數據(即採購訂單號)。

謝謝。

回答

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

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

您可以使用正則表達式:

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

正則表達式真的花費太多。這裏不需要。 – JYL 2011-01-20 15:31:40

1

嘗試String.Split

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

本訂單之前,一切都創建一個數組arsplit[] NO。在arSplit[0]以及arsplit[1]之後的所有內容。

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

不能用「我的翅膀PO NO。12345-2」 – JYL 2011-01-20 15:33:46

+0

不能工作雖然這取決於類型名稱總是一個單詞,所以我會小心這個(但如果你修改它沒有一個硬編碼`3`,而是查詢有多少部分,我認爲是可以的)。 – 2011-01-20 15:34:33

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); 
} 
2

使用實際字符串表示你有各個文本部分之後的空間......所以提供尚未另一條路線...

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