3 回答

TA貢獻1821條經驗 獲得超5個贊
你不需要正則表達式*。簡單的子串和刪除可以做到這一點。
這是我快速提出的一些東西。
string test = "?9CZIA KUOTA PIV 1,21 SUMA 12,36 otóuka 2 | 0350 |tKasa 1";
test = test.Substring(test.IndexOf("SUMA ") + 5);
test = test.Remove(test.IndexOf(' '));
可能會以某種方式簡化,但它確實有效。如果您需要結果實際是一種decimal類型,您當然需要轉換它。
*請注意,這并不能保證您會有一個數字(例如,如果您的輸入錯誤),因此您需要對其進行驗證。
由于您編輯了您的帖子以添加這樣一個事實,即在我發布答案后 SUMA 和數字之間可能有多個單詞,因此我不會在這里明確處理。在這種情況下,我認為正則表達式更有意義。

TA貢獻1865條經驗 獲得超7個贊
如果 SUMA 和 number 之間可以有單詞,則可以匹配任何字符零次或多次非貪婪.*?,然后在一個組中捕獲(\d+,\d+)
SUMA.*? (\d+,\d+)
string pattern = @"SUMA.*? (\d+,\d+)";
string input = @"?9CZIA KUOTA PIV 1,21 SUMA test 12,36 otóuka 1,1 2 | 0350 |tKasa 1";
Regex r = new Regex(pattern);
Match match = r.Match(input);
Console.WriteLine(match.Groups[1]); // 12,36

TA貢獻1779條經驗 獲得超6個贊
使用代碼:
string str = "?9CZIA KUOTA PIV 1,21 SUMA 12,36 otóuka 2 | 0350 |tKasa 1";
int index = str.IndexOf("SUMA");
if (index > -1)
{
str = str.Substring(index + 5);// SUMA + SPACE char == 4+1 = 5
int inx = str.IndexOf(" ");
if (index > -1)
{
str = str.Substring(0, inx);
Console.WriteLine(str.Trim());
}
}
- 3 回答
- 0 關注
- 292 瀏覽
添加回答
舉報