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 个空字符串。为什么?
.
在正则表达式中表示"任何字符"。所以不要使用正则表达式拆分 - 使用 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("[.]");