我試圖把一個字符串,並從一個字符刪除所有字符到另一個如何在某些位置刪除字符串中的某些字符?
例字符串:
String personAndPhone = " Dave (206515608)"
我想這個字符串轉換成兩個字符串,這個人的名字和電話號碼(沒有「()」)。
我該怎麼辦?
我試圖把一個字符串,並從一個字符刪除所有字符到另一個如何在某些位置刪除字符串中的某些字符?
例字符串:
String personAndPhone = " Dave (206515608)"
我想這個字符串轉換成兩個字符串,這個人的名字和電話號碼(沒有「()」)。
我該怎麼辦?
試試這個
String a[] = personAndPhone.trim().replaceAll("[()]", "").split(" ");
a[0] -> Dave
a[1] -> 206515608
我注意到你周圍有空間,所以我要做的第一件事就是修剪。
personAndPhone = personAndPhone.trim();
接下來,你有一個在中間的空間,這可能是一個很好的分裂點。
String[] tokens = personAndPhone.split(" ");
String name = tokens[0];
// now contains: Dave
接下來,你可以從數字中的括號去掉:
String number = tokens[1].replaceAll("[()]", "");
// now contains: 206515608
或者作爲@EvgeniyDorofeev更簡明地說:
String[] tokens = personAndPhone.trim().replaceAll("[()]", "").split(" ");
String name = tokens[0];
String number = tokens[1];
我'傾向於使用正規快遞離子做這樣的事情: -
String personAndPhone = " Dave (206515608)"
Pattern pattern = Pattern.compile("([A-Za-z]+)\s\(([0-9]+)\)");
Matcher matcher = pattern.matcher(personAndPhone);
String name = matcher.group(1)
String number = matcher.group(2)
可以很明顯的讓你需要你的正則表達式更復雜一點。這可以讓你解析更嚴格一點。用正則表達式還可以更精確地控制精度和長度檢查。
參見http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html
使用正則表達式:
String name = str.replaceAll("\\s*(.*)\\s*\\(.*", "$1");
String phone = str.replaceAll(".*?\\((.*)\\).*","$1");
這些線的這兩個替換整個輸入與第1組,其捕獲對象。
「名稱」是括號內的所有內容,不包括任何一端的空格,所以它會捕獲「John Smith 3rd」沒有問題。
的 「手機」 是第一個和最後一個括號之間的一切,所以它會捕捉 「(01)5678 9876」,從 「戴夫((01)5678 9876)」。
提示:'substring()' –
@NarendraPathai:No. – Qix