2016-12-13 86 views
0

假設主字符串類似於: 「最後的價格是三星(100.59),諾基亞(35.23),蘋果(199.34)」。 是否有任何方法通過發送名稱來從該字符串中提取值?提取值在特定單詞後被分隔符清除

public Double getValue(String name);

所以getValue(「Nokia」)將返回35.23,並且getValue(Apple)將返回199.34。

+1

做到這一點在API號你寫你自己的邏輯。 – Azodious

+0

根據'String.indexOf(「Nokia」)' –

+0

'\ w \(\ d +(\。\ d +)?\ \}編寫自己的問題有什麼問題'您可以嘗試使用此正則表達式來獲取名稱然後在括號 – rafid059

回答

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()); 
} 
+1

上分割它只是一個改進,最好把'Pattern.compile(「(?<=」+ name +「\\()\\ d + \\。\\ d +(?= \\ ))方法外的「)」。 – Mritunjay

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); 
} 
相關問題