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

时间:2012-03-12 15:02:42

标签: c# regex

 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个空字符串。为什么呢?

11 个答案:

答案 0 :(得分:27)

.表示正则表达式中的“任何字符”。所以不要使用正则表达式进行拆分 - 使用String.Split拆分:

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

如果确实想要使用正则表达式,您可以使用:

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

@使它成为一个逐字字符串文字,以阻止你不得不逃避反斜杠。字符串本身内的反斜杠是正则表达式解析器中点的转义。

答案 1 :(得分:6)

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

答案 2 :(得分:4)

.是正则表达式中的保留字符。如果你真的想要匹配一段时间,请尝试:

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

但是,您最好只使用myNumber.Split(".");

答案 3 :(得分:4)

  

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

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

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

改为使用它。

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

答案 4 :(得分:3)

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

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

它有an other overload,允许指定拆分选项:

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

答案 5 :(得分:2)

使用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();

答案 6 :(得分:2)

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

@"\."

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

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

答案 7 :(得分:2)

期间“。”被解释为任何单个字符而不是字面句。

您可以这样做,而不是使用正则表达式:

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

答案 8 :(得分:1)

尝试

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

编辑:呃......我想在Jon Skeet不是太糟糕的一分钟之后,无论如何......

答案 9 :(得分:1)

您需要在“。”之前放置一个转义字符。 - 像这样“\\。”

“”。在正则表达式匹配任何字符,所以如果你传递4个字符到只有“。”的正则表达式,它将返回四个空字符串。查看常见操作员this page

答案 10 :(得分:1)

尝试

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