2010-07-14 89 views
5

im cố gắng làm cho một thay thế trong chuỗi từ một mảng nhưng dont này làm việcThay thế trong mảng

dna[i].replace('T', 'C'); 

và với công việc theo cách này?

"ATCTA".replace('T', 'C'); 

tại sao không làm việc với mảng, làm thế nào tôi có thể sử dụng sử dụng một thay thế trong mảng []

Bây giờ tôi đã có vấn đề khác, tôi muốn sử dụng Thay thế khác nhau trong chuỗi ban đầu, làm thế nào tôi có thể Mahe này ?? ??

+1

là 'dna' một mảng của Strings hoặc một mảng các ký tự? – VeeArr

+1

Chính xác là lỗi hoặc kỳ vọng của bạn - như bạn có thể thấy từ câu trả lời, chúng tôi có hai lý thuyết cạnh tranh ;-) –

Trả lời

8
String dna[] = {"ATCTA"}; 
int i = 0; 
dna[i] = dna[i].replace('T', 'C'); 
System.out.println(dna[i]); 

Điều này hoạt động như mong đợi. Kiểm tra kỹ mã của bạn nếu bạn làm theo một mẫu tương tự.


Bạn có thể mong đợi, mà dna[i].replace('T', 'C'); thay đổi nội dung của các tế bào dna[i] trực tiếp. Đây không phải là trường hợp, Chuỗi sẽ không được thay đổi, replace sẽ trả về một Chuỗi mới nơi mà char đã được thay thế. Cần phải gán kết quả của hoạt động replace cho một biến.


Để trả lời bình luận cuối cùng của bạn:

Strings là không thay đổi - bạn không thể thay đổi một char duy nhất bên trong một đối tượng String. Tất cả các thao tác trên Strings (chuỗi con, thay thế, '+', ...) luôn tạo các chuỗi mới.

Một cách để làm nhiều hơn một thay thế là như thế này:

dna[i] = dna[i].replace('T', 'C').replace('A', 'S'); 
+0

Điều này sẽ tạo một mảng một phần tử của chuỗi và 'dna [i]' tham chiếu đầu tiên (chỉ) yếu tố. Tôi nghĩ rằng OP đã nhầm lẫn một đối tượng String và một mảng các ký tự, không phải là một mảng của Strings. – Andy

+0

@Andreas, tôi nghĩ anh ấy có một loạt các ký tự, không phải là một chuỗi các chuỗi. – jjnguy

+0

Tôi nghĩ anh ta có một chuỗi các chuỗi, không phải của các ký tự. –

2

Mảng chỉ là cấu trúc dữ liệu chứa dữ liệu. Nó không hỗ trợ bất kỳ thao tác nào trên dữ liệu đó. Bạn cần phải viết các thuật toán để tự làm việc trên dữ liệu.

A String về cơ bản là mảng char với một số phương pháp mà bạn có thể gọi trên đó. Phương pháp replace() là một trong số đó.

Phương pháp bạn muốn sẽ giống như thế này:

static void replace(char[] arr, char find, char replace) { 
    for (int i = 0; i < arr.length; i++) { 
     if (arr[i] == find) { 
      arr[i] = replace; 
      return; 
     } 
    } 
} 

Sau đó, bạn sẽ gọi nó là như vậy:

replace(dna, 'T', 'C'); 

Điều đó sẽ thay thế các trường hợp đầu tiên của T trong mảng với một C .

Các vấn đề liên quan