正则表达式 + 将由空格分隔的数字行转换为数组
本文关键字:数字 转换 数组 分隔 空格 正则表达式 | 更新日期: 2023-09-27 18:35:04
我正在尝试将包含多个数字的字符串(其中每个数字由空格分隔)转换为双数组。
例如,原始字符串如下所示:
originalString = "50 12.2 30 48.1"
我一直在使用 Regex.Split(originalString, @"''s*"),但它返回的数组如下所示:
[50'"'"12'".'"2'"'"...]
任何帮助都非常感谢。
改用这个
originalString.Split(new char[]{''t', ''n', ' ', ''r'}, StringSplitOptions.RemoveEmptyEntries);
无需每次都匆忙:)正则表达式
string[] myArray = originalString.Split(' ');
呢 我认为这里不需要正则表达式。
如果您确实想使用正则表达式,请使用模式'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()
添加到该调用链中即可。
+
字符是必需的,因为您需要至少 1 个字符才能使其正确匹配。
我会坚持使用String.Split
,提供您期望的所有空格字符。
在正则表达式中,'s
等同于[ 't'r'n]
(加上一些特定于所用味道的其他字符);我们可以通过char[]
来表示这些字符:
string[] nums = originalString.Split(
new char[] { ' ', ''t', ''r', ''n' },
StringSplitOptions.RemoveEmptyEntries);
如果将
null
作为分隔符传递给String.Split
,则默认行为是在空格上拆分。这包括与 Unicode IsWhiteSpace
测试匹配的任何内容。在 ASCII 范围内,这意味着制表符、换行符、垂直制表符、表单换行符、回车符和空格。
您也可以通过传递RemoveEmptyEntries
选项来避免空字段。
originalString = "50 12.2 30 48.1";
string[] fields = originalString.Split(null as char[], StringSplitOptions.RemoveEmptyEntries);