【问题标题】:Splitting a string in java on more than one symbol在多个符号上拆分java中的字符串
【发布时间】:2021-09-02 18:11:20
【问题描述】:

当后面的符号遇到“+,-,*,/,=”时,我想拆分一个字符串 我正在使用拆分函数,但此函数只能接受一个参数。此外,它不适用于“+”。 我正在使用以下代码:-

Stringname.split("Symbol");

谢谢。

【问题讨论】:

标签: java string symbols split


【解决方案1】:

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

【讨论】:

  • @RohitJain 是的,刚刚意识到。我已经编辑了我的答案,谢谢指出。
  • @saumyaraj 我不明白你的问题?
  • 我的意思是,当我在拆分函数中使用“+”时,它会显示类似“悬空元字符”之类的错误。你能解释一下这个错误吗?谢谢
  • @saumyaraj 是的。这是一个元字符,如Pattern 的保留字符。它表示一个量词(有关更多信息,请参阅Pattern 页面)。它在字符类中可以正常工作,但如果在字符类之外解释为文字“+”则需要转义。在您的情况下,只需尝试将其双重转义为 \\+ 而不是 +
【解决方案2】:

你可以使用正则表达式:

String[] tokens = input.split("[+*/=-]");

注意:- 应放在首位或末位,以确保它不被视为范围分隔符。

【讨论】:

  • input.split("[+*-/=]"); 还包括,.。仅以拆分"a,b.c" 为例,因为从*/ 的范围包括这些字符。
  • input.split("[+*/-=]"); 甚至包括数字、冒号、分号和< 符号。
  • 字符类中的破折号始终被视为范围分隔符,除非它位于第一个或最后一个位置。
【解决方案3】:

您需要正则表达式。此外,您还需要正则表达式 OR 运算符:

String[]tokens = Stringname.split("\\+|\\-|\\*|\\/|\\=");

【讨论】:

    【解决方案4】:

    为此,您需要使用适当的正则表达式语句。您列出的大多数符号都在正则表达式中保留,因此您必须使用 \ 转义它们。

    一个非常基线的表达式是\+|\-|\\|\*|\=。比较容易理解,你要的每个符号都用\转义,每个符号之间用|(或)符号隔开。例如,如果您还想添加 ^,您只需将 |\^ 添加到该语句即可。

    为了测试和快速表达,我喜欢使用 www.regexpal.com

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-25
      • 2019-08-21
      • 2013-02-20
      • 1970-01-01
      • 2013-05-28
      • 2012-10-24
      • 1970-01-01
      相关资源
      最近更新 更多