2012-05-25 46 views
13

Tôi đang gặp một số sự cố khi cố gắng thay thế dấu gạch chéo ngược trong chuỗi ngày trên C# .net.Thay thế dấu gạch chéo ngược trong một chuỗi

Cho đến nay tôi đang sử dụng:

string.Replace(@"\","-") 

nhưng nó has not thực hiện việc thay đổi. Bất cứ ai có thể vui lòng giúp đỡ?

+1

Bạn có chắc chắn chuỗi chứa backslashes và không _forward_ slashes (như _dates_ chủ yếu được đại diện)? – Oded

+1

Tôi nghi ngờ bạn nên tắt định dạng 'DateTime' hơn là cố gắng thực hiện thao tác chuỗi. – Jodrell

+0

Xin lỗi, có gì trong ví dụ của tôi không? – mezamorphic

Trả lời

34

string.Replace không tự sửa đổi chuỗi nhưng trả về một chuỗi mới, mà rất có thể bạn đang vứt bỏ. Thực hiện việc này thay thế:

myString= myString.Replace(@"\","-"); 

Một lưu ý phụ, loại hoạt động này thường thấy trong mã theo cách thủ công xung quanh với chuỗi ngày được định dạng. Hầu hết thời gian có một cách tốt hơn để làm những gì bạn muốn (đó là?) Hơn những thứ như thế này.

1

Sử dụng theo cách này.

oldstring = oldstring.Replace(@"\","-"); 

Tìm loại trả về String.Replace.

Hàm của nó trả về chuỗi đã sửa. Nếu nó chỉ đơn giản là thay đổi chuỗi cũ thì nó sẽ có loại trả về void.

0

Bạn cũng có thể sử dụng:

myString = myString.Replace('\\', '-')); 

nhưng chỉ cho bạn biết, ngày slashes thường mong những /, và không dấu xồ nguợc \.

+0

'" \\ "== @" \ "' không? Tôi không suposse hạn chế để 'char' sẽ làm cho sự khác biệt hoặc. – Jodrell

+0

@ericosg: Đọc về 'chuỗi nguyên văn trong C#' –

+0

@Jodrell, cảm ơn, vâng, chúng giống nhau, chỉ đề xuất một thay thế trong khi quan trọng hơn cần lưu ý dấu gạch chéo về phía trước. Tôi cũng đã chỉnh sửa nó. – ericosg

0

Theo đề xuất của người khác rằng String.Replace không cập nhật đối tượng chuỗi ban đầu nhưng thay vào đó nó trả về một chuỗi mới.

myString= myString.Replace(@"\","-"); 

Thật đáng giá để bạn hiểu chuỗi đó không thay đổi trong C# về cơ bản để làm cho chuỗi này an toàn. Thông tin chi tiết về chuỗi và lý do tại sao chúng không thay đổi, vui lòng xem liên kết herehere

3

vì tất cả đều nói rằng bạn cần lấy lại giá trị trong biến.

vì vậy nó phải

val1= val1.Replace(@"\","-"); 

Hoặc

val1= val1.Replace("\\","-"); 

nhưng không chỉ .. dưới đây ai sẽ không hoạt động

val1.Replace(@"\","-"); 
Các vấn đề liên quan