2012-11-07 36 views
18

Tôi đang cố gắng thay thế một phần của chuỗi bằng một chuỗi khác. Để được chính xác hơn Tôi có C:\Users\Desktop\Project\bin\DebugThay thế chuỗi C# không hoạt động

và tôi đang cố gắng thay thế \bin\Debug với \Resources\People

Tôi đã thử những điều sau đây:

  1. path.Replace(@"\bin\Debug", @"\Resource\People\VisitingFaculty.txt");

  2. path.Replace("\\bin\\Debug", "\\Resource\\People\\VisitingFaculty.txt");

Không ai ở trên có vẻ như hoạt động, vì chuỗi vẫn giữ nguyên và không có gì được thay thế. Tôi có làm điều gì sai?

+3

"nó không hoạt động" là điều bạn thực sự không nên có trong câu hỏi. Cái gì không hiệu quả? Nó làm gì? Những gì nó không làm điều đó phải không? Có lỗi không, nếu có, chúng là gì? – Servy

+1

Không hoạt động có nghĩa là không làm những gì nó được cho là phải làm, thay thế chuỗi bằng một chuỗi khác. Đây là câu hỏi về kiểu hỏi đáp. Tôi vừa phát hiện ra câu trả lời và tạo câu hỏi kiểu Hỏi & đáp này –

+1

Mặc dù câu trả lời cho câu hỏi vẫn ổn, câu hỏi vẫn sẽ được giữ lại theo cùng một tiêu chuẩn. Câu hỏi này, nếu được hỏi một mình, sẽ là một câu hỏi chất lượng thấp. Câu trả lời của bạn không (và không thể) ảnh hưởng đến điều đó. Như tôi đã nói, "nó không hoạt động" có nghĩa là không có gì. Bạn cần phải nêu ra cả những gì bạn mong đợi nó làm, hoặc muốn nó làm, cũng như những gì nó thực sự làm. Trong trường hợp này, "nó không hoạt động" có nghĩa là 'đường dẫn' không bị thay đổi; nó chứa chuỗi gốc. Nó không lỗi, nó không thay đổi chuỗi thành một cái gì đó khác với đầu ra mong muốn, và vấn đề không có điều kiện. – Servy

Trả lời

50

Vấn đề là các chuỗi không thay đổi được. Các phương thức thay thế, chuỗi con vv không thay đổi chính chuỗi đó. Họ tạo ra một chuỗi mới và thay thế nó. Vì vậy, đối với mã trên là đúng nó phải được

path1 = path.Replace("\\bin\\Debug", "\\Resource\\People\\VisitingFaculty.txt"); 

Hoặc chỉ cần

path = path.Replace("\\bin\\Debug", "\\Resource\\People\\VisitingFaculty.txt"); 

nếu biến khác là không cần thiết

EDIT Câu trả lời này cũng là một lời nhắc nhở rằng chuỗi là không thay đổi. Bất kỳ thay đổi nào bạn thực hiện cho họ sẽ thực tế tạo ra một chuỗi mới. Vì vậy, hãy nhớ rằng mọi thứ (kể cả quản lý bộ nhớ)

+5

Hoặc chỉ 'path = path.Replace (" \\ bin \\ Gỡ lỗi "," \\ Resource \\ People \\ VisitingFaculty.txt ");' nếu khác biến là không cần thiết. – kprobst

+0

thêm nó ngay bây giờ: D Trước hết tôi đã sử dụng một biến khác để nó được hiển thị là một chuỗi trả về nhưng tôi sẽ quảng cáo phần đó là số –

+2

Lên trên bình chọn cả câu hỏi và câu trả lời vì điều này đã giải quyết được vấn đề tôi gặp phải. Tôi không tin rằng bỏ phiếu xuống là công bằng dựa trên câu hỏi, và một tìm kiếm của "string.replace C# không làm việc" mang lại cho tôi ở đây. –

9

Phương thức path.Replace thực sự trả về string. Bạn nên làm như sau:

path = path.Replace("firstString", "secondString"); 
+0

Đây là một câu hỏi về kiểu hỏi đáp. Tôi đã trả lời bản thân mình –

+0

LOL, cũng có bạn đi. – PaulG

+4

@macrian Và điều đó không có nghĩa là những người khác không thể trả lời. Nếu người khác có thể cung cấp câu trả lời mà họ cảm thấy tốt hơn bạn, họ có mọi quyền cung cấp câu trả lời bổ sung. Đó là một phần của mục đích của SO; tất cả mọi người có khả năng đáp ứng và bỏ phiếu kết quả trong các câu trả lời tốt nhất (bất kể tác giả) có xu hướng nổi lên hàng đầu. – Servy

6
String.Replace(string,string) returns string. 

Vì vậy, tiết kiệm con đường mới ở một số biến chuỗi.

path = path.Replace("\\bin\\Debug", "\\Resource\\People\\VisitingFaculty.txt"); 
Các vấn đề liên quan