【问题标题】:method to take string inside curly braces using split or tokenizer使用 split 或 tokenizer 在花括号内获取字符串的方法
【发布时间】:2018-10-30 05:47:14
【问题描述】:
String s = "author= {insert text here},";

试图获取字符串的内部,我环顾四周,但找不到仅使用拆分或标记器的解决方案...

到目前为止,我正在这样做

arraySplitBracket = s.trim().split("\\{", 0);

这给了我insert text here}, 在数组 [1] 但 id 就像不附加 } 的一种方式

也试过了

StringTokenizer st = new StringTokenizer(s, "\\{,\\},");

但它给了我author= 作为输出。

【问题讨论】:

  • 你能清楚地提到你的输入格式吗?sauthor 指的是同一个变量吗? author= {insert text here}, 在此您有一个逗号,因此不清楚您分配给author 的字符串的确切格式是什么。
  • 编辑了问题

标签: java string split stringtokenizer


【解决方案1】:
public static void main(String[] args) {
        String input="{a c df sdf TDUS^&%^7 }";     
        String regEx="(.*[{]{1})(.*)([}]{1})";
        Matcher matcher = Pattern.compile(regEx).matcher(input);            

        if(matcher.matches()) {         
            System.out.println(matcher.group(2));
        }
}

【讨论】:

  • 只有 stringtokenizer 或 split 有什么办法吗?我觉得它应该更简单;o
  • Split 或 StringTokenizer 只能用于拆分分隔的字符串。在这里,由于您的案例是一个用花括号括起来的字符串,我希望它可能没有帮助。
  • 所以如果我使用 split 唯一的方法是对该字符串进行子串化并执行 length()-2?arraySplitBracket[1].substring(0, arraySplitBracket[1].length()-2 ) 这似乎有效。
  • 是的,正如你所说,如果你使用拆分,你必须忽略结尾的花括号
  • 拆分或 StringTokenizer 。两者都将仅在固定分隔符的情况下使用。如果你使用你必须从最后一个花括号中获取子字符串。
【解决方案2】:

您可以使用\\{([^}]*)\\} 正则表达式来获取花括号之间的字符串。

代码快照:

String str = "{insert text here}";
        Pattern p = Pattern.compile("\\{([^}]*)\\}");
        Matcher m = p.matcher(str);
        while (m.find()) {
          System.out.println(m.group(1));
        }

输出:

insert text here

【讨论】:

  • 能否详细解释一下正则表达式
【解决方案3】:
String s = "auther ={some text here},"; 
s =  s.substring(s.indexOf("{") + 1); //some text here},
s = s.substring(0, s.indexOf("}"));//some text here
System.out.println(s);

【讨论】:

    【解决方案4】:

    如何通过排除arraySplitBracket.length()-1处的字符来获取子字符串

    有点像

    arraySplitBracket[1] = arraySplitBracket[1].substring(0,arraySplitBracket.length()-1);
    

    或者使用 String 类的 replaceAll 函数替换 } ?

    【讨论】:

      猜你喜欢
      • 2021-10-15
      • 1970-01-01
      • 2016-11-30
      • 1970-01-01
      • 1970-01-01
      • 2021-05-25
      • 2012-01-24
      • 2019-07-18
      • 2012-06-30
      相关资源
      最近更新 更多