在特定单词后提取由分隔符删除的值

时间:2016-12-13 05:30:07

标签: java regex match

假设一个主字符串类似于: "最后的价格是三星(100.59),诺基亚(35.23),苹果(199.34)和#34;。 有没有通过发送名称从这个String中提取值的方法?

public Double getValue(String name);

所以getValue(" Nokia")将返回35.23,getValue(Apple)将返回199.34。

2 个答案:

答案 0 :(得分:2)

以下是适合您案例的内容

public static void main(String[] args) {
    String s = "The last prices are Samsung(100.59), Nokia(35.23), Apple(199.34)";
    System.out.println(getValue(s, "Samsung"));
    System.out.println(getValue(s, "Nokia"));
    System.out.println(getValue(s, "Apple"));
}

private static String getValue(String text, String valueOf) {
    int fromIndex = text.indexOf(valueOf);
    int start = text.indexOf("(", fromIndex);
    int end = text.indexOf(")", fromIndex);
    return text.substring(start + 1, end);
}

答案 1 :(得分:2)

您可以使用正则表达式执行此操作

public Double getValue(String name){
    Pattern p = Pattern.compile("(?<=" + name + "\\()\\d+\\.\\d+(?=\\))");
    Matcher m = p.matcher("<your matcher string>");
    m.find();
    return Double.parseDouble(m.group());
}