在這裏使用正則表達式會很好。我敢打賭,也有辦法做到這一點,雖然我不是一個擺擺擺臂的正規男人,所以我不能幫你。然而,有些東西是你無法避免的 - 有些東西需要最終遍歷你的字符串。你可以這樣做「對自己」像這樣:
String[] splitOnCapitals(String str) {
ArrayList<String> array = new ArrayList<String>();
StringBuilder builder = new StringBuilder();
int min = 0;
int max = 0;
for(int i = 0; i < str.length(); i++) {
if(Character.isUpperCase(str.charAt(i))) {
String line = builder.toString().trim();
if (line.length() > 0) array.add(line);
builder = new StringBuilder();
}
builder.append(str.charAt(i));
}
array.add(builder.toString().trim()); // get the last little bit too
return array.toArray(new String[0]);
}
我用下面的測試驅動程序進行了測試:
public static void main(String[] args) {
String test = "3/4 Ton truCk";
String[] arr = splitOnCapitals(test);
for(String s : arr) System.out.println(s);
test = "Start with Capital";
arr = splitOnCapitals(test);
for(String s : arr) System.out.println(s);
}
,得到了以下的輸出:
3/4
Ton tru
Ck
Start with
Capital
什麼啓動一個 「字」?它不能是任何大寫字母或數字,因爲「3/4」將是兩個單詞「3 /」和「4」。我想你需要在得到一個好答案之前更準確地定義你的規則。 – 2010-05-17 15:48:11
一個數字或大寫字母。我感到困惑的是如何將我的需求合併到一個正則表達式中?我需要知道使用正則表達式的最佳方法是什麼,以便我的程序能夠根據數字或大寫字母來分割字符串作爲起點。 謝謝 – 2010-05-17 16:01:40