簡體   English   中英

如何使用RegEx分隔數字和字符?

[英]How to separate numbers and characters with RegEx?

我有以下正則表達式字符串

(\d+)(((.|,)\d+)+)?(ms|s| ms| s)

它驗證用戶是否以毫秒為單位輸入了正確的字符串。 可能值的示例是

  • 100毫秒
  • 100秒
  • 100毫秒
  • 100秒
  • 52.55秒

為了進行進一步的操作,我需要將字符串和數字分開,例如,如果輸入的值為123.45ms ,則應該得到123.45ms

截至目前,我只知道數字和字符串丟失了!

我可以將數字和字符串分成兩個不同的步驟,但是我有興趣立即執行任何建議,我該怎么做?

您使用組:

        string s = "123.45ms";
        Match m = Regex.Match(s, @"(\d+([.,]\d+)?) *(ms|s)");

        if (m.Success)
        {
            Console.WriteLine(m.Groups[1]);
            Console.WriteLine(m.Groups[3]);
        }

你很親密 您已經在指定匹配組。 看看Match.Groups屬性。

我認為您確實在獲取數字和單位,問題是它被放入比您想象的大的數組元素中。 我建議將您的正則表達式修改為:

(\d+)([\.|,]\d+)?\s?(m?s)

現在,您將數字的整數設為1,如果存在於2(如果不是,則為空),則為十進制,而單位為3。這有點整潔,您將再也無法獲得單位中的空格。

或者,您可以使用:

(\d+[\.|,]\d+|\d+)\s?(m?s)

如果您始終希望數字在索引1處,單位在2。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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