在这种情况下如何删除最后一个括号

时间:2014-08-21 09:36:47

标签: java

这是我的程序

package com.util;

public class SplitBy {

    public static void main(String args[]) {

        String name = "Masala Roasted with peanuts(49)";
        String category_id = "";

        if (!name.contains(",")) {
            if (name.contains("(")) {
                String[] parts = name.split("\\(");
                category_id = parts[1];

                System.out.println(category_id);
            }
        }

    }

}

这样当前的输出是

49)

请告诉我如何获得结束括号并仅生成

49

4 个答案:

答案 0 :(得分:3)

您可以在两个括号中分割String

String[] parts = name.split("[()]");

[()]是一个匹配openning和closing括号的正则表达式。由于split()正在分割String匹配项,因此结束括号不会包含在结果值中。

根据split() javadoc

  

因此,结尾的空字符串不包含在结果数组中。

这意味着它不会在数组末尾添加空元素。

答案 1 :(得分:2)

您可以这样做:

category_id = category_id.substring(0, category_id.length() - 1);

将删除字符串中的最后一个字符。

答案 2 :(得分:0)

您可以查找两个括号,只打印两者之间的内容:

  

category_id = name.substring(name.indexOf(“(”)+ 1,name.indexOf(“)”));

答案 3 :(得分:0)

检查出来

package com.util;

public class SplitBy {

    public static void main(String args[]) {

        String s = "";
        Pattern pattern = Pattern.compile("(?<=)(\\d+)");
        String EXAMPLE_TEST = "Masala Roasted with peanuts(49)";
        Matcher matcher = pattern.matcher(EXAMPLE_TEST);

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

}