簡體   English   中英

如何將字符串拆分為數組(java)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM