[英]Split on numeric to letters excluding comma
我有一個包含“ 0,35mA”的字符串,現在有下面的代碼,它將“ 0,35mA”拆分為
“ 0”
“,”
“ 35”
“嘛”
List<string> splittedString = new List<string>();
foreach (string strItem in strList)
{
splittedString.AddRange(Regex.Matches(strItem, @"\D+|\d+")
.Cast<Match>()
.Select(m => m.Value)
.ToList());
}
我想要的是將代碼拆分為
“ 0.35”
“嘛”
我該如何實現?
看起來您想將字符串標記為數字和其他所有內容。
更好的正則表達式方法是用數字匹配模式進行拆分 ,同時將整個模式包裝到捕獲組中,以便將匹配的部分也放入結果數組中。
既然你有,
作為一個小數點分隔符,你可以使用
var results = Regex.Split(s, @"([-+]?[0-9]*,?[0-9]+(?:[eE][-+]?[0-9]+)?)")
.Where(x => !string.IsNullOrEmpty(x))
.ToList();
參見regex演示 :
正則表達式基於將浮點數與正則表達式匹配中描述的模式。
.Where(x => !string.IsNullOrEmpty(x))
是擺脫空項目(如果有)所必需的。
我假設您所有的字符串都將具有相同的格式。
因此,嘗試使用此正則表達式:
string regex = "([\\d|,]{4})|[\\w]{2}";
它應該工作。
var st = "0,35mA";
var li = Regex.Matches(st, @"([,\d]+)([a-zA-z]+)").Cast<Match>().ToList();
foreach (var t in li)
{
Console.WriteLine($"Group 1 {t.Groups[1]}")
Console.WriteLine($"Group 2 {t.Groups[2]}");
}
第一組0,35
2毫安組
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.