[英]How split string to array (java)
我需要將String拆分為數組。 例如,我有字符串str =“ apple fruit money money Pacific Ocean”。 我嘗試像這樣拆分為數組:
String []arr = str.split(" ");
但是我需要太平洋在陣列的一個單元中進行注冊。 我無法更改分隔符,因為我以這種形式獲取數據(“蘋果向太平洋賺錢”)。
如果我們承認需要將多個連續的大寫單詞視為一個單詞,則可以執行以下操作:
String []arr = str.split("\\\\s");
然后`String str =“蘋果果實貨幣太平洋”;
String[] arr = str.split("\\s");
String[] finalArr = new String[arr.length];
int i = 0;
for (String word : arr) {
// capitalized
if (Character.isUpperCase(word.charAt(0))) {
// check if previous is capitalized
if (Character.isUpperCase(finalArr[i - 1].charAt(0))) {
finalArr[i - 1] = finalArr[i - 1] + word + " ";
} else {
finalArr[i] = word + " ";
}
} else {
finalArr[i] = word;
}
i++;
}
for (String s : finalArr) {
System.out.println(s);
}
}
}`
結果將是: apple fruits money Pacific Ocean null
您需要過濾空值並添加一些檢查(如果i-1存在)。
您需要按照Elliott Frisch在他的評論中所述更改分隔符。 您將無法確定如果一組單詞包含空格,是否需要保持在一起。 如果您的單詞表由另一個字符(例如逗號)分隔,則該問題將變得更容易解決。
String input = "apples,fruits,money,Pacific Ocean";
String[] arr = input.split(",");
現在,您的數組包含input
中的每個單詞。
問題和注釋中描述的問題沒有解決方案。
考慮一下:
"banana red apple green apple"
可以這樣拆分:
["banana", "red", "apple", "green", "apple"]
或像這樣
["banana", "red apple", "green apple"]
沒有語義/上下文分析,就不可能知道哪個更正確。 而且不可能確定(人類)用戶的實際含義。
我無法更改分隔符,因為我以這種形式獲取數據(“蘋果向太平洋賺錢”)。
您需要重新設計表單或輸入語法,以便您的軟件不需要執行此任務。 沒有其他方法……始終獲得正確答案。
這樣想吧。 假設有人在一張紙上給您一系列外語單詞,並要求您正確分割它們。 假設您不懂該語言並且未獲得字典或規則,您(人類)將如何解決該問題? 這相當於您要設置計算機的任務...
這樣是不可能的。 如果字符串是較早加入的,請嘗試使用非空格字符。 也許管道|
可能是一個選擇。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.