簡體   English   中英

正則表達式+將由空格分隔的數字行轉換為數組

[英]Regex + Convert line of numbers separated by white space into array

我正在嘗試將包含多個數字(每個數字由空格分隔)的字符串轉換為雙精度數組。

例如,原始字符串如下所示:

originalString = "50 12.2 30 48.1"

我一直在使用Regex.Split(originalString,@“ \\ s *”),但它返回的數組看起來像:

[50
""
12
"."
2
""
...]

任何幫助深表感謝。

改用這個

originalString.Split(new char[]{'\t', '\n', ' ', '\r'}, StringSplitOptions.RemoveEmptyEntries); 

無需每次都趕着RegEx :)

那么string[] myArray = originalString.Split(' '); 我看不到這里需要RegEx。

如果您確實要使用RegEx,請使用模式\\s+代替\\s* *表示零個或多個,但您想分割一個或多個空格字符。

正則表達式的工作示例:

        string originalString = "50   12.2   30 48.1";
        string[] arr = Regex.Split(originalString, @"\s+");

        foreach (string s in arr)
            Console.WriteLine(s);
Regex.Split(originalString, @"\s+").Where(s => !string.IsNullOrWhiteSpace(s))

Where返回一個IEnumerable其中已濾除null /空白。 如果您仍希望將其作為數組,則只需將.ToArray()添加到該調用鏈中。

+字符是必需的,因為您需要MINIMUM至少為1才能使其正確匹配。

我會堅持使用String.Split ,提供您期望的所有空白字符。

在正則表達式中, \\s等於[ \\t\\r\\n] (加上使用中的特定於風味的其他一些字符); 我們可以通過char[]表示這些:

string[] nums = originalString.Split(
    new char[] { ' ', '\t', '\r', '\n' }, 
    StringSplitOptions.RemoveEmptyEntries);

如果將null作為分隔符傳遞給String.Split的默認行為是在String.Split分割。 其中包括與Unicode IsWhiteSpace測試相匹配的IsWhiteSpace 在ASCII范圍內,這意味着制表符,換行符,垂直制表符,換頁符,回車符和空格。

您也可以通過傳遞RemoveEmptyEntries選項來避免使用空字段。

originalString = "50 12.2 30 48.1";
string[] fields = originalString.Split(null as char[], StringSplitOptions.RemoveEmptyEntries);

暫無
暫無

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

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