【问题标题】:Get Substring from a String from __ [duplicate]从__的字符串中获取子字符串 [重复]
【发布时间】:2017-08-02 10:40:03
【问题描述】:

我想从字符串中提取子字符串,从__(双下划线)开始,直到找到"(双引号)或特殊字符'[](),'

我已经有一段时间了,但无法弄清楚。

例如:输入字符串:"NAME":"__NAME"

必需的字符串:__NAME

感谢您的宝贵时间。

【问题讨论】:

  • 1.找到__ 2. 从该位置开始的子字符串的位置。 3.在新字符串中:找到"的位置。 4. 直到那个位置的子串

标签: java string


【解决方案1】:

您可以使用此正则表达式(__(.*?))[\"\[\]\(\),] 来获得您想要的内容:

String str = "\"NAME\":\"__NAME\"";
String regex = "(__(.*?))[\"\\[\\]\\(\\),]";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(str);

while (matcher.find()) {
    System.out.println(matcher.group(1));
}

输出

__NAME

regex demo

【讨论】:

    【解决方案2】:

    你可以试试下面的代码

    String input="\"NAME\":\"__NAME\"";
    int startIndex=input.indexOf("__");
    int lastIndex=input.length();
    String output=input.substring(startIndex, (lastIndex-1));
    System.out.println(output);
    

    【讨论】:

    • 我认为@ParkerHalo 的算法描述了一个更好的解决方案...
    【解决方案3】:

    希望此解决方案对您有所帮助:

    import java.util.*;
    class test
    {
        public static void main(String[] args) {
            Scanner s=new Scanner(System.in);
            String a=s.next();
            int i=a.indexOf("__");
            int j=a.indexOf('"',i);
            System.out.println(a.substring(i,j));
           }
    }
    

    这里首先计算__的索引,然后在__之后计算"的索引。然后使用substring方法得到所需的输出。

    【讨论】:

      猜你喜欢
      • 2013-08-12
      • 1970-01-01
      • 1970-01-01
      • 2015-11-04
      • 2019-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多