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