我將數據存儲在需要提取並轉換爲另一個字符串的字符串中。我的字符串數據如下所示:從C#中的字符串中提取採購訂單#並將其放入另一個字符串中
Widget PO NO。 1234
身體PO NO。 123456
Wing PO NO。 12345-2
Nut PO NO。 1-234-56-7
「PO NO。」將始終保持不變,所以我只想在「NO。」中的尾部空格後面提取數據,並將其轉換爲另一個字符串,以便可以獲得數字數據(即採購訂單號)。
謝謝。
我將數據存儲在需要提取並轉換爲另一個字符串的字符串中。我的字符串數據如下所示:從C#中的字符串中提取採購訂單#並將其放入另一個字符串中
Widget PO NO。 1234
身體PO NO。 123456
Wing PO NO。 12345-2
Nut PO NO。 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;
嘗試String.Split:
strOrder = "Widget PO NO. 1234";
arSplit = strOrder.Split(" PO NO. ");
本訂單之前,一切都創建一個數組arsplit[]
NO。在arSplit[0]
以及arsplit[1]
之後的所有內容。
string order = orders.Split(" ")[3];
不能用「我的翅膀PO NO。12345-2」 – JYL 2011-01-20 15:33:46
不能工作雖然這取決於類型名稱總是一個單詞,所以我會小心這個(但如果你修改它沒有一個硬編碼`3`,而是查詢有多少部分,我認爲是可以的)。 – 2011-01-20 15:34:33
使用正則表達式來提取您需要的部分。這個正則表達式將返回分組結果:
[.\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);
}
使用實際字符串表示你有各個文本部分之後的空間......所以提供尚未另一條路線...
String rawPO = "Body PO NO. 123456";
String trimmedPO = rawPO.Remove(0, rawPO.LastIndexOf(" ")).Trim();
正則表達式真的花費太多。這裏不需要。 – JYL 2011-01-20 15:31:40