假設主字符串類似於: 「最後的價格是三星(100.59),諾基亞(35.23),蘋果(199.34)」。 是否有任何方法通過發送名稱來從該字符串中提取值?提取值在特定單詞後被分隔符清除
public Double getValue(String name);
所以getValue(「Nokia」)將返回35.23,並且getValue(Apple)將返回199.34。
假設主字符串類似於: 「最後的價格是三星(100.59),諾基亞(35.23),蘋果(199.34)」。 是否有任何方法通過發送名稱來從該字符串中提取值?提取值在特定單詞後被分隔符清除
public Double getValue(String name);
所以getValue(「Nokia」)將返回35.23,並且getValue(Apple)將返回199.34。
你可以用正則表達式
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());
}
上分割它只是一個改進,最好把'Pattern.compile(「(?<=」+ name +「\\()\\ d + \\。\\ d +(?= \\ ))方法外的「)」。 – Mritunjay
這裏是東西,將工作你的情況
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);
}
做到這一點在API號你寫你自己的邏輯。 – Azodious
根據'String.indexOf(「Nokia」)' –
'\ w \(\ d +(\。\ d +)?\ \}編寫自己的問題有什麼問題'您可以嘗試使用此正則表達式來獲取名稱然後在括號 – rafid059