2016-03-04 33 views
-1
public static void removeDuplicateSpaces(char[] characters) { 

    int dupCount = 0; 
    for (int i = 0; i < characters.length; i++) { 
     if (characters[i] == ' ' && characters[i + 1] == ' ') { 
      dupCount++; 
      for (int j = i; j < characters.length - 1; j++) { 
       characters[j] = characters[j + 1]; 

      } 
      if ((characters[i] == ' ' && characters[i + 1] == ' ')) { 
       dupCount++; 
       for (int j = i; j < characters.length - 1; j++) { 
        characters[j] = characters[j + 1]; 
       } 
       dupCount++; 
      } 
      for (int add = characters.length - 1; add > 
        characters.length- dupCount; add--) { 
       characters[add] = '\u0000'; 

      } 

     } 

    } 

} 

我需要降低2個或多個空格的所有序列以1個空間 字符陣列中彼此相鄰。如果刪除了任何空格,則空字符'\ u0000'的相同數字 將填充 數組末尾的元素。 如果中間有5個空格,我的代碼不會刪除4個空格。 如{ 'E', '', '', '', '', '', '4'}如何刪除2個或更多空間,從一個字符數組

回答

2

如何將其轉換爲String,做一些正則表達式和回char數組?

new String(characters).replaceAll("[ ]+", " ").toCharArray() 

編輯:好吧,我看到你實際上沒有返回數組,但修改原始數組。然後,你可以使用一個簡單的循環

String s = new String(characters).replaceAll("[ ]+", " "); 
for (int i = 0; i < characters.length; i++) { 
    characters[i] = (i < s.length() ? s.charAt(i) : '\u0000'); 
} 
1

不同的變種,向您展示如何它應該簡單的循環工作:

public static void removeDuplicateSpaces(final char[] characters) { 
    for (int i = 0; i < characters.length; i++) { 
     while (characters[i] == ' ') { // while current symbol is space 
      for (int j = (i + 1); j < characters.length; j++) 
       characters[j - 1] = characters[j]; // shift the rest of array 
      characters[characters.length - 1] = 0; 
     } 
    } 
} 
相關問題