3 回答

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超5個(gè)贊
你不需要正則表達(dá)式*。簡(jiǎn)單的子串和刪除可以做到這一點(diǎn)。
這是我快速提出的一些東西。
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(' '));
可能會(huì)以某種方式簡(jiǎn)化,但它確實(shí)有效。如果您需要結(jié)果實(shí)際是一種decimal類型,您當(dāng)然需要轉(zhuǎn)換它。
*請(qǐng)注意,這并不能保證您會(huì)有一個(gè)數(shù)字(例如,如果您的輸入錯(cuò)誤),因此您需要對(duì)其進(jìn)行驗(yàn)證。
由于您編輯了您的帖子以添加這樣一個(gè)事實(shí),即在我發(fā)布答案后 SUMA 和數(shù)字之間可能有多個(gè)單詞,因此我不會(huì)在這里明確處理。在這種情況下,我認(rèn)為正則表達(dá)式更有意義。

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊
如果 SUMA 和 number 之間可以有單詞,則可以匹配任何字符零次或多次非貪婪.*?,然后在一個(gè)組中捕獲(\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貢獻(xiàn)1779條經(jīng)驗(yàn) 獲得超6個(gè)贊
使用代碼:
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 關(guān)注
- 285 瀏覽
添加回答
舉報(bào)