正则表达式 + 将由空格分隔的数字行转换为数组

本文关键字:数字 转换 数组 分隔 空格 正则表达式 | 更新日期: 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);