C# 为什么我不能把绳子分开?
我试图用“.”分割字符串,但它会返回4个空字符串。为什么?C# 为什么我不能把绳子分开?,c#,regex,C#,Regex,我试图用“.”分割字符串,但它会返回4个空字符串。为什么?在正则表达式中表示“任何字符”。因此,不要使用正则表达式进行拆分-拆分使用: 如果您确实想使用正则表达式,可以使用: string[] substrings = myNumber.Split('.'); @使其成为逐字逐句的字符串文字,以避免您必须避开反斜杠。字符串本身中的反斜杠是正则表达式解析器中点的转义。是正则表达式中的保留字符。如果您确实想匹配句点,请尝试: Regex regex1 = new Regex(@"\."); 但是
在正则表达式中表示“任何字符”。因此,不要使用正则表达式进行拆分-拆分使用:
如果您确实想使用正则表达式,可以使用:
string[] substrings = myNumber.Split('.');
@
使其成为逐字逐句的字符串文字,以避免您必须避开反斜杠。字符串本身中的反斜杠是正则表达式解析器中点的转义。
是正则表达式中的保留字符。如果您确实想匹配句点,请尝试:
Regex regex1 = new Regex(@"\.");
但是,您最好只使用myNumber.Split(“.”)代码>保持简单,使用方法
它具有允许指定拆分选项的选项:
string[] substrings = myNumber.Split('.');
试一试
编辑:呃。。。我想Jon Skeet之后不到一分钟也不算太糟糕,无论如何…最简单的解决方案是:string[]val=myNumber.Split('.')代码>您需要在“.”之前放置一个转义字符,如“\\”
正则表达式中的“.”匹配任何字符,因此,如果将4个字符传递给仅带“.”的正则表达式,它将返回四个空字符串。检查常见的操作员
点匹配单个字符,而不关心该字符是什么
是唯一的例外是换行符
资料来源:
因此,您在代码中暗示要在每个字符处拆分字符串
用这个代替
Regex regex1 = new Regex(@"\.");
您不需要正则表达式,您可以使用string对象的Split
方法来实现这一点
string substr = num.Split('.');
试一试
在正则表达式模式中,句点字符匹配任何单个字符。如果希望正则表达式与实际句点字符匹配,则必须在模式中转义它,如下所示:
Regex regex1 = new Regex("[.]");
现在,这个例子对于正则表达式匹配来说有点简单;您可以改为使用String.Split(),它将根据一个或多个静态字符串或字符的出现进行拆分:
@"\."
句点“.”被解释为任何单个字符,而不是文字句点
不使用正则表达式,您只需执行以下操作:
string[] substrings = myNumber.Split('.');
@雷蒂德:我给了两个建议,一个是关于你为什么没有告诉我们使用正则表达式,另一个是关于你没有。。。如果您不需要使用正则表达式,为什么要这样做?字符串子字符串
应该是字符串[]子字符串
,但是对于编辑来说太小了。@retide:是的,使用正则表达式,您必须使用@“\”
或“\\”
来转义
。我非常喜欢Jon Skeet,24关于字符串拆分的投票?您正在使用的Split
重载包含params
关键字。因此,您可以删除新字符[]{}
,直接指定字符<代码>公共字符串[]拆分(params char[]separator)
。显然这个问题需要更多答案。;-)我刚刚被勒格斯泰处死……你是要让乔恩·斯基特的回答成为答案,还是在等待更多的信息?
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();
Regex regex1 = new Regex("[.]");
@"\."
string[] substrings = myNumber.Split('.');
string[] substrings = myNumber.Split(".");