簡體   English   中英

將數字拆分為字母(不包括逗號)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM