【问题标题】:What is the efficient way to get a specific substring from a string in Java?从Java中的字符串获取特定子字符串的有效方法是什么?
【发布时间】:2017-09-09 06:35:57
【问题描述】:

我有一个字符串如下:

"[error=<null>,EntityID=105378032, Context=<null>]"

我想提取EntityID(在这种情况下为105378032),但我想要一个通用的解决方案。

什么是最有效的方法。

我不想遍历字符串并得到那部分。

【问题讨论】:

  • “我不想遍历字符串并得到那部分。”。那么我想,将其存储在 String 中并不是您能做的最好的事情。
  • s.substring(8, 26)?
  • 它是一个大项目的一部分,他们已经在其中存储了它,是否有一个单一的语句命令来执行它?
  • @JB Nizel 我想要一个通用的解决方案。
  • 你的EntityID总是的位数是固定的吗?

标签: java string substring


【解决方案1】:

您是否尝试过像.*EntityID=(.*?),.* 这样的正则表达式,这意味着使用replaceAll 获取EntityID= 和下一个逗号, 之间的字符组:

String str = "[error=,EntityID=105378032, Context=]";
System.out.println(str.replaceAll(".*EntityID=(.*?),.*", "$1"));// output 105378032

regex demo

【讨论】:

    【解决方案2】:

    使用正则表达式似乎是最好的出路。

    此代码有效:

    String str = "[error=,EntityID=105378032, Context=]";
        String[] arr = str.split("EntityID="); //splits it on the part "EntityID="
        String[] arr1 = arr[1].split(","); // splits it on the next comma in the 'right' half of your string.
        System.out.println(arr1[0]); //prints the 'left' half before the comma.
    

    Ideone link here.

    希望这会有所帮助!

    【讨论】:

      【解决方案3】:

      你可以使用这个方法,它的工作就像一个魅力

      public static String getSubString(String mainString, String lastString, String startString) {
              String endString = "";
              int endIndex = mainString.indexOf(lastString);
              int startIndex = mainString.indexOf(startString);
              endString = mainString.substring(startIndex, endIndex);
              return endString;
          }
      

      结果:

      String resultStr = getSubString(yourFullString,",Context","EntityID=");
      

      编码愉快。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-28
        • 2016-02-19
        • 2011-10-06
        • 1970-01-01
        • 2016-01-07
        相关资源
        最近更新 更多