我需要将String拆分为数组。为了exapmle我有串str ="苹果果钱太平洋"。 我尝试像这样分裂成数组:
String []arr = str.split(" ");
但我需要太平洋在阵列的一个单元格中注册。我无法更改分隔符,因为我以这种形式获取数据("苹果水果钱太平洋")。
答案 0 :(得分:2)
如果我们承认需要将多个连续大写单词视为单个单词,那么您可以这样做:
String []arr = str.split("\\s");
然后 `String str =“apple fruits money Pacific Ocean”;
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完全存在)。
答案 1 :(得分:1)
您需要更改分隔符,如Elliott Frisch在评论中所述。如果它们包含空格,您将无法确定一组单词是否需要保持在一起。如果您的单词列表被另一个字符(例如逗号)分隔,则问题变得更容易解决。
String input = "apples,fruits,money,Pacific Ocean";
String[] arr = input.split(",");
现在,您的数组包含input
中的每个单词。
答案 2 :(得分:1)
问题和评论中描述的问题没有解决方案。
考虑一下:
"banana red apple green apple"
这可以像这样分开:
["banana", "red", "apple", "green", "apple"]
或者像这样
["banana", "red apple", "green apple"]
如果没有语义/上下文分析,就不可能知道哪个更可能是正确的。并且不可能确定(人类)用户实际上的意思。
我无法更改分隔符,因为我以这种形式获取数据(“apple fruits money Pacific Ocean”)。
您需要重新设计表单或输入语法,以便您的软件不需要执行此任务。没有其他办法......总能得到正确答案。
这样想。假设有人在一张纸上给你一系列外语单词,并要求你正确地拆分它们。如果您不理解语言,并且没有给出字典或一组规则,您(人类)将如何解决问题?这相当于您设置计算机的任务......
答案 3 :(得分:0)
这种方式不可能。如果字符串先前已加入,请尝试使用空格以外的字符。管道|
可能是一个选项。