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个空字符串。为什么呢?
答案 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("[.]");