2012-07-11 137 views
3

在Java中,我想從一個字符數組中刪除某些元素,因此它不一樣的東西:Java的字符數組 - 刪除元素

char[] Array1 = {'h','m','l','e','l','l'}; 
Array1 = //character index[2] to character index[5] 

如何才能做到這一點?

回答

8

在Java中,您無法從數組中刪除元素。但是你可以:

創建一個新的char[]僅複製要保留的元素;爲此,您可以使用System.arraycopy()或更簡單的Arrays.copyOfRange()。例如,對於僅複製數組的前三個字母:

char[] array1 = {'h','m','l','e','l','l'}; 
char[] array2 = Arrays.copyOfRange(array1, 0, 3); 

或者使用List<Character>,它可以讓你獲得一個子列表,範圍要素:

List<Character> list1 = Arrays.asList('h','m','l','e','l','l'); 
List<Character> list2 = list1.subList(0, 3); 
+0

您是如何複製的某些元素怎麼我想: 「碼」(的char [] =例如//第一個字符到最後3) 是有一個範圍方法什麼的? – user1516514 2012-07-11 03:35:55

0

您可以使用此方法:

public static char[] copyArray(char[] original, int start, int length) 
{ 
    char[] result = new char[length]; 
    for (int i = 0; i < length; i++) 
    { 
     result[i] = original[start + i]; 
    } 
    return result; 
} 
+4

或者你可以使用['Arrays.copyOfRange(char [],int,int)'](http://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#copyOfRange \ (炭[],%20int,%20int \))。 – 2012-07-11 03:48:55

1

您可以使用Arrays.copyOfRange這樣的:

array1 = Arrays.copyOfRange(array1, 2, 5); 

更多info

1

的Java函數來從字符陣列中刪除一個字符:

String msg = "johnny can't program, he can only be told what to type"; 
char[] mychararray = msg.toCharArray(); 
mychararray = remove_one_character_from_a_character_array_in_java(mychararray, 21); 
System.out.println(mychararray); 

public char[] remove_one_character_from_a_character_array_in_java(
          char[] original, 
          int location_to_remove) 
{ 
    char[] result = new char[original.length-1]; 
    int last_insert = 0; 
    for (int i = 0; i < original.length; i++){ 
     if (i == location_to_remove) 
      i++; 

     result[last_insert++] = original[i]; 
    } 
    return result; 
} 

上述方法打印消息與索引21除去。你可以把它放在一個循環中去除多個項目。從技術上講,你並沒有刪除一個項目,你正在創建一個全新的char數組,並刪除了這個項目。您必須遍歷整個字符串,以便每次刪除都非常低效。

通過索引從Java中的字符陣列的StringBuilder刪除字符:

String mystring = "inflation != stealing"; 
char[] my_char_array = mystring.toCharArray(); 
StringBuilder sb = new StringBuilder(); 
sb.append(mystring); 
sb.deleteCharAt(10); 
my_char_array = sb.toString().toCharArray(); 
System.out.println(my_char_array);    //prints "inflation = stealing" 

上述代碼除去從字符陣列感嘆號。如果你想刪除字符的範圍,請使用sb.delete(10, 15);