如何将字符串拆分为数组(java)

时间:2018-04-07 21:52:29

标签: java

我需要将String拆分为数组。为了exapmle我有串str ="苹果果钱太平洋"。 我尝试像这样分裂成数组:

String []arr = str.split(" ");

但我需要太平洋在阵列的一个单元格中注册。我无法更改分隔符,因为我以这种形式获取数据("苹果水果钱太平洋")。

4 个答案:

答案 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)

这种方式不可能。如果字符串先前已加入,请尝试使用空格以外的字符。管道|可能是一个选项。