Chuỗi không thay đổi, nghĩa là bạn không thể thay đổi ký tự. Thay vào đó, bạn tạo chuỗi mới.
Những gì bạn đang yêu cầu có thể được thực hiện theo nhiều cách. Giải pháp thích hợp nhất sẽ khác nhau tùy thuộc vào bản chất của những thay đổi bạn đang thực hiện đối với chuỗi gốc. Bạn chỉ thay đổi một nhân vật? Bạn có cần chèn/xóa/nối thêm không?
Dưới đây là một vài cách để tạo ra một chuỗi mới từ một chuỗi hiện có, nhưng có một ký tự đầu tiên khác nhau:
str = 'M' + str.Remove(0, 1);
str = 'M' + str.Substring(1);
Ở trên, chuỗi mới được gán cho các biến ban đầu, str
.
Tôi muốn thêm rằng câu trả lời từ những người khác thể hiện StringBuilder
cũng rất phù hợp. Tôi sẽ không khởi tạo StringBuilder
để thay đổi một ký tự, nhưng nếu cần nhiều thay đổi, thì StringBuilder
là giải pháp tốt hơn các ví dụ tạo chuỗi tạm thời mới trong quy trình. StringBuilder
cung cấp một đối tượng có thể thay đổi cho phép nhiều thay đổi và/hoặc chắp thêm hoạt động. Khi bạn đã thực hiện xong các thay đổi, một chuỗi bất biến được tạo từ StringBuilder
bằng phương pháp .ToString()
. Bạn có thể tiếp tục thực hiện thay đổi đối tượng StringBuilder
và tạo thêm chuỗi mới, nếu cần, sử dụng .ToString()
.
Nguồn
2012-01-24 13:01:44
Bạn đang gặp phải lỗi gì? – Oded
Bất cứ lỗi nào anh ta nhận được là một lỗi tốt. Các chuỗi là các đối tượng bất biến, bình thường cho trình biên dịch phàn nàn về lệnh đó ... –
@Oded - có một số lý do khiến việc này không hoạt động. Chuỗi là bất biến trong .NET, không giống như, ví dụ, Delphi, nơi nó sẽ hoạt động. Bạn không thể thay đổi ký tự chuỗi theo chỉ mục như thế này. C# cũng không có chuyển đổi ngầm từ chuỗi thành char - 'M' sẽ phải được khai báo là {char c = 'M'}. –