Splitting a string in java on more than one symbol
当符号遇到"+, - ,*,/,="时我想拆分一个字符串
我正在使用split函数,但是这个函数只能使用一个参数。而且它不能用于"+"。
我使用以下代码: -
1
| Stringname.split("Symbol"); |
谢谢。
-
你开始阅读javadoc了吗? 必须有一些解释,为什么分裂+不能给你你想要的东西。
-
也许看看:stackoverflow.com/questions/7492672/
String.split将正则表达式作为参数。
这意味着您可以在一个参数中交替使用任何符号或文本抽象,以便分割String。
请参阅此处的文档
以下是您案例中的示例:
1 2 3 4 5
| String toSplit ="a+b-c*d/e=f";
String[] splitted = toSplit. split("[-+*/=]");
for (String split : splitted ) {
System. out. println(split );
} |
输出:
笔记:
-
Pattern的保留字符必须使用\\进行双重转义。编辑:这里不需要。
-
模式中的[]括号表示字符类。
-
更多关于Pattern的信息。
-
无需在字符类中转义那些元字符。
-
@RohitJain是的,刚才意识到。我已经编辑了我的答案,谢谢你指出。
-
这会工作还是"+"
-
@saumyaraj我不明白你的问题?
-
我的意思是,当我在分割函数中使用"+"时,它向我显示了类似"悬空元字符"的错误。你可以解释一下这个错误吗?谢谢
-
@saumyaraj是的。这是一个元字符,如Pattern的保留字符。它表示量词(有关详细信息,请参见Pattern页面)。它在字符类中可以正常工作,但如果在字符类之外被解释为文字"+",则需要进行转义。在您的情况下,只需尝试双重转义为\\+而不是+。
您可以使用正则表达式:
1
| String[] tokens = input. split("[+*/=-]"); |
注意:-应放在第一个或最后一个位置,以确保它不被视为范围分隔符。
-
我不能用"必须在第一个或最后一个"替换"不能在第二个"......
-
@jlordo input.split("[+*-/=]");工作得很好......
-
虽然input.split("[+*/-=]");没有...
-
input.split("[+*-/=]");还包括,和.。只需拆分"a,b.c"作为示例,因为从*到/的范围包括这些字符。
-
input.split("[+*/-=]");甚至包括数字,冒号,分号和<符号。
-
字符类中的破折号始终被视为范围分隔符,除非它位于第一个或最后一个位置。
你需要正则表达式。 Addionaly你需要正则表达式OR运算符:
1
| String[]tokens = Stringname. split("\\+|\\-|\\*|\\/|\\="); |
为此,您需要使用适当的正则表达式语句。您列出的大多数符号都保留在正则表达式中,因此您必须使用\来转义它们。
一个非常基线的表达式是\+|\-|\\|\*|\=。相对容易理解,您想要的每个符号都用\进行转义,每个符号用|(或)符号分隔。例如,如果您想要添加^,那么您需要做的就是将|\^附加到该语句。
对于测试和快速表达,我喜欢使用www.regexpal.com