2016-03-01 116 views
0

我有一個字符串數組包含額外的水,果汁和額外的牛奶,所以我想知道如何擺脫額外的和使用字符串中唯一的第二個單詞,以便預期產量是水,果汁和牛奶。排序字符串數組

+0

你的邏輯不清楚。 –

+0

「額外」是唯一不必要的單詞還是還有其他這樣的單詞? –

+0

如果第一個單詞在數組中是重複的,我只想使用第二個單詞。因此,如果陣列是額外的水,果汁,額外的牛奶,良好的葡萄,好蘋果,美味的橙,產量將是水,果汁,牛奶,葡萄,蘋果,美味的橙色 –

回答

2

使用String.split('')將字符串拆分一個空格,然後檢查結果以查看字符串長度== 2。如果是,則取第二個數組元素,否則取第一個。

for(int i = 0; i < array.length; i++) { 
    String[] parts = array[i].split(' '); 
    if(parts.length == 2) { 
     array[i] = parts[1]; 
    } 
} 

編輯:如果您要刪除所有重複的話,你可以做使用兩遍陣列上以下內容:

// Pass 1 -- find all duplicate words 
    Set<String> wordSet = new HashSet<>(); 
    Set<String> duplicateSet = new HashSet<>(); 
    for (int i = 0; i < array.length; i++) { 
     String[] parts = array[i].split(" "); 
     for (String part : parts) { 
      if (!wordSet.contains(part)) { 
       // Haven't seen this word before 
       wordSet.add(part); 
      } else { 
       // This word is a duplicate word 
       if (!duplicateSet.contains(part)) { 
        duplicateSet.add(part); 
       } 
      } 
     } 
    } 

    // Pass 2 -- remove all words that are in the duplicate set 
    for (int i = 0; i < array.length; i++) { 
     String[] parts = array[i].split(" "); 
     String dedupedString = ""; 
     for (String part : parts) { 
      if (!duplicateSet.contains(part)) { 
       dedupedString += part + " "; 
      } 
     } 
     array[i] = dedupedString; 
    } 
3

如果你想要做的就是刪除特定字符串,則:

String[] array = {"Extra Water", "Juice", "Extra Milk"}; 
array = Arrays.stream(array).map(s-> s.replaceAll("Extra", "")).toArray(); 

這使用Java 8流,但你可以像迭代一樣簡單地做到這一點。

+0

'map(s - > s.replaceFirst(「^Extra「,」「))'在這種情況下可能更適合,儘管:) –

0

只需要遍歷數組的每個元素,並替換數組中每個元素中的「Extra」,然後修剪空白。

String[] array = {"Extra Water", "Juice", "Extra Milk"}; 
    for (int i = 0; i < array.length; i++) { 
     array[i] = array[i].replace("Extra", "").trim(); 
    } 
    for (String each : array) { 
     System.out.println(each); 
    }