【问题标题】:Java split String by tokenJava按令牌拆分字符串
【发布时间】:2015-10-09 02:23:26
【问题描述】:

以下代码:

String str = "She is a girl";
String[] substr = str.split("is");

substr[1] 的输出是“一个女孩”。但我的预期是输出“是一个女孩”。我该如何解决这个问题?我可以根据token的索引拆分字符串吗?

【问题讨论】:

    标签: java regex string


    【解决方案1】:

    使用积极的前瞻标记。

    String[] substr = str.split("(?=is)");
    

    【讨论】:

      【解决方案2】:

      str.substring(str.indexOf("is"))

      如果你想获取字符串的第一部分,你可以调用str.substring(0, str.indexOf("is"))

      编辑:查看@Codebender 的答案 更适合这个问题。

      【讨论】:

      • OP 想要获得带有分隔符的第二部分。但是,您的答案仅涵盖与 OP 无关的第一部分
      • @Panther string.substring(x) 等于 string.substring(x, string.length())
      • 对不起,我错过了答案的第一部分。我开始阅读文本,只看到第二部分。我的坏:-(
      【解决方案3】:

      由于拆分方法不包括令牌,因此您的程序输出是正确的。对于您的需要而不是 split ,您可以使用 substringindex 如下

      String str = "She is a girl";
      String substr1 = str.substring(str.indexOf("is"), str.length);
      

      如果您需要获取字符串的一部分,请首选子字符串。当您需要根据令牌将字符串分成多个字符串时,拆分是很好的选择。

      如果你想只使用 split 或者有多个令牌并且还想包含令牌,你可以使用look ahead token

      【讨论】:

        【解决方案4】:

        您可以使用replaceFirst

        string.replaceFirst(".*?\\b(is)\\b", $1);
        

        DEMO

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-01-25
          • 2014-05-27
          • 1970-01-01
          • 1970-01-01
          • 2012-04-20
          相关资源
          最近更新 更多