【发布时间】:2021-09-02 18:11:20
【问题描述】:
当后面的符号遇到“+,-,*,/,=”时,我想拆分一个字符串 我正在使用拆分函数,但此函数只能接受一个参数。此外,它不适用于“+”。 我正在使用以下代码:-
Stringname.split("Symbol");
谢谢。
【问题讨论】:
-
您是从阅读 javadoc 开始的吗?必须有一些解释为什么在
+上拆分不能给你想要的东西。
当后面的符号遇到“+,-,*,/,=”时,我想拆分一个字符串 我正在使用拆分函数,但此函数只能接受一个参数。此外,它不适用于“+”。 我正在使用以下代码:-
Stringname.split("Symbol");
谢谢。
【问题讨论】:
+ 上拆分不能给你想要的东西。
String.split 将正则表达式作为参数。
这意味着您可以在一个参数中交替使用任何符号或文本抽象来拆分您的String。
请参阅文档here。
这是你的例子:
String toSplit = "a+b-c*d/e=f";
String[] splitted = toSplit.split("[-+*/=]");
for (String split: splitted) {
System.out.println(split);
}
输出:
a
b
c
d
e
f
注意事项:
Patterns 的保留字符必须使用 \\ 进行双重转义。 编辑:这里不需要。 [] 括号表示一个字符类。Patterns here。【讨论】:
Pattern 的保留字符。它表示一个量词(有关更多信息,请参阅Pattern 页面)。它在字符类中可以正常工作,但如果在字符类之外解释为文字“+”则需要转义。在您的情况下,只需尝试将其双重转义为 \\+ 而不是 +。
你可以使用正则表达式:
String[] tokens = input.split("[+*/=-]");
注意:- 应放在首位或末位,以确保它不被视为范围分隔符。
【讨论】:
input.split("[+*-/=]"); 还包括, 和.。仅以拆分"a,b.c" 为例,因为从* 到/ 的范围包括这些字符。
input.split("[+*/-=]"); 甚至包括数字、冒号、分号和< 符号。
您需要正则表达式。此外,您还需要正则表达式 OR 运算符:
String[]tokens = Stringname.split("\\+|\\-|\\*|\\/|\\=");
【讨论】:
为此,您需要使用适当的正则表达式语句。您列出的大多数符号都在正则表达式中保留,因此您必须使用 \ 转义它们。
一个非常基线的表达式是\+|\-|\\|\*|\=。比较容易理解,你要的每个符号都用\转义,每个符号之间用|(或)符号隔开。例如,如果您还想添加 ^,您只需将 |\^ 添加到该语句即可。
为了测试和快速表达,我喜欢使用 www.regexpal.com
【讨论】: