【问题标题】:Splitting string using multiple delimiters Java使用多个分隔符Java拆分字符串
【发布时间】:2013-04-02 21:13:46
【问题描述】:

我想使用多个分隔符分割一个字符串。现在我正在使用这个: String delims = "[\\s;.,:'!?()]"; 这似乎对这些角色很有效,但是当我尝试添加 - 角色时,它对我大喊大叫。如何使用所有这些字符加上 - 作为分隔符来拆分我的字符串?提前致谢!

【问题讨论】:

  • 你把那个角色放在哪里?这将被解读为正则表达式中的一个范围,这可能就是它不喜欢它的原因。
  • 它大叫。凉爽的。你使用什么编译器或运行时有这种错误报告?
  • 我试着把它放在其他地方——我应该把它放在哪里,以便它知道我想用单个字符作为分隔符?
  • 您可以尝试将破折号保留在方括号的末尾或开头...例如[\\s;.,:'!?()-]
  • 我正在使用 Eclipse...如果我尝试将 \- 或 |- 添加到现有字符串,它会给我一个正则表达式错误 - “索引 5 附近的非法字符范围”

标签: java string split delimiter


【解决方案1】:
  • 字符类里面有特殊的含义。它通常用于选择一系列字符,例如:[a-z] ...为了单独匹配破折号...保留在开头或结尾

我试过了,效果很好

  String regex = "[\\s;.,:'!?()-]";
  String text = "jatin-shah-testing";

  String[] tokens = text.split(regex);
  for(int i = 0; i < tokens.length; i++)
    System.out.println(tokens[i]);

【讨论】:

    【解决方案2】:

    - 在字符类中有特殊含义,表示范围。 (例如,[0-9] 将匹配任何数字。)

    但是,如果你把它作为第一个字符或最后一个字符,它将被匹配为文字 -

    【讨论】:

    • 哦,有道理。我尝试将其作为最后一个角色,并且效果很好。谢谢!
    • @mkjo0617:不客气。不要忘记为有帮助的答案投票,并选择您认为对您最有帮助的答案作为正确答案。
    猜你喜欢
    • 1970-01-01
    • 2012-09-04
    • 2012-10-24
    • 1970-01-01
    • 1970-01-01
    • 2018-02-27
    • 2012-02-27
    • 1970-01-01
    相关资源
    最近更新 更多