[英]Get a part of a String using C#
我必須得到一小段字符串,如下所示:
20T41
總是兩個數字,一個字母和一個數字。
但是我有許多不同的鏈,如下所示:
我已經使用了一些這樣的代碼,但我不知道如何為每種情況做到這一點。 我認為這比使用許多 IF 更好。
str = str.Substring (0, str.LastIndexOf ('/') + 1);
黑色標記的是我想要得到的字符串。 我正在考慮做點什么,但這效率不高。 你建議怎么做?
您可以嘗試在正則表達式的幫助下匹配片段:
using System.Text.RegularExpressions;
...
str = Regex.Match(str, "[0-9]{2}T[0-9]+").Value;
或者在任何(不是必需的T
)大寫字母的情況下可以出現:
str = Regex.Match(str, "[0-9]{2}[A-Z][0-9]+").Value;
以下正則Regex
也將有所幫助
var regex = new Regex("\\d{2}\\w\\d+");
var input = new List<string>()
{"PNC 20T17", "PNC 19T1391", "P.N.C 19T1456,", "NC - 19T1099", "PNC 19T323", "19T1512."};
foreach (var item in input)
{
var match = regex.Match(item);
Console.WriteLine(match);
}
它產生以下輸出
20T17
19T1391
19T1456
19T1099
19T323
19T1512
你可以看一下quick reference
,看看里面每個class的意思
\\d{2}
十進制數字,精確兩倍\\w
任何單詞字符,大寫與否\\d+
十進制數字一次或多次。 您可以將其更改為\\d{1,}
或\\d{2,}
。 這意味着匹配數字至少一兩次,沒有上限,這在 OP 中沒有指定。 或使用上限,如\\d{1,9}
如果您提供的示例都是組合,那么LastIndexOf
和Substring
將完成工作;
var yourInput = "P.N.C 19T1456";
var res = yourInput.Substring(yourInput.LastIndexOf(' ') + 1) ;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.