C# 为什么我不能拆分字符串

本文关键字:拆分 字符串 不能 为什么 | 更新日期: 2023-09-27 18:27:43

 string myNumber = "3.44";
       Regex regex1 = new Regex(".");
       string[] substrings = regex1.Split(myNumber);
        foreach (var substring in substrings)
        {
            Console.WriteLine("The string is : {0} and the length is {1}",substring, substring.Length);
        }
        Console.ReadLine();

我试图通过"."拆分字符串,但它的拆分返回 4 个空字符串。为什么?

C# 为什么我不能拆分字符串

.在正则表达式中表示"任何字符"。所以不要使用正则表达式拆分 - 使用 String.Split 拆分:

string[] substrings = myNumber.Split('.');

如果你真的想使用正则表达式,你可以使用:

Regex regex1 = new Regex(@"'.");

@使其成为逐字字符串文字,以阻止您不得不转义反斜杠。字符串本身中的反斜杠是正则表达式解析器中点的转义。

最简单的解决方案是:string[] val = myNumber.Split('.');

.是正则表达式中的保留字符。 如果您真的想匹配句点,请尝试:

Regex regex1 = new Regex(@"'.");

但是,您最好简单地使用myNumber.Split(".");

点匹配单个字符,而不关心该字符的内容 是。唯一的例外是换行符。

来源: http://www.regular-expressions.info/dot.html

因此,您在代码中暗示在每个字符处拆分字符串。

请改用这个。

string substr = num.Split('.');

保持简单,使用 String.Split(( 方法;

string[] substrings = myNumber.Split('.'); 

它有一个允许指定拆分选项的其他重载:

public string[] Split(
    char[] separator,
    StringSplitOptions options
)

你不需要正则表达式,你可以通过使用字符串对象的方法Split做到这一点

string myNumber = "3.44";
String[] substrings = myNumber.Split(".");
foreach (var substring in substrings)
{
   Console.WriteLine("The string is : {0} and the length is {1}",substring, substring.Length);
}
Console.ReadLine();

句点"."被解释为任何单个字符而不是文字句点。

与其使用正则表达式,不如直接执行以下操作:

string[] substrings = myNumber.Split(".");

在正则表达式模式中,句点字符匹配任何单个字符。如果您希望正则表达式与实际的句点字符匹配,则必须在模式中对其进行转义,如下所示:

@"'."

现在,这种情况对于正则表达式匹配来说有点简单;你可以改用 String.Split((,它将根据一个或多个静态字符串或字符的出现进行拆分:

string[] substrings = myNumber.Split('.');

尝试

Regex regex1 = new Regex(@"'.");

编辑:呃...我想在乔恩·斯基特之后不到一分钟还不错,无论如何......

您需要

在"." - 像这个 "''''" 之前放置一个转义字符。

正则表达式中的 "." 匹配任何字符,因此如果将 4 个字符传递给仅包含 "." 的正则表达式,它将返回四个空字符串。查看此页面了解常见运算符。

尝试

 Regex regex1 = new Regex("[.]");