2011-09-23 33 views
7

Tôi đã cố gắng chia chuỗi thành các mảng và thay thế \ bằng \\, nhưng không thể làm điều đó, tôi cũng đã thử String.replaceAll một cái gì đó như thế này ("\","\\");. Tôi muốn cung cấp một đường dẫn đến JNI và nó chỉ đọc theo cách này. Ai đó có thể giúp tôi về điều này được không. Cảm ơn bạn.Cách thay thế "" bằng "\" trong java

Trả lời

22

Không sử dụng String.replaceAll trong trường hợp này - được chỉ định theo cụm từ thông dụng, có nghĩa là bạn cần thoát hơn nữa. Điều này cần được tốt:

String escaped = original.replace("\\", "\\\\"); 

Lưu ý rằng những dấu xồ nguợc được tăng gấp đôi do là trong xâu Java - vì vậy các thực tế chuỗi liên quan ở đây là "dấu chéo ngược đơn" và "dấu chéo ngược kép" - chứ không phải tăng gấp đôi và tăng gấp bốn lần.

replace hoạt động trên các chuỗi đơn giản - không liên quan đến regex.

+7

Chết tiệt! Skeeted một lần nữa! –

+0

Điều này thêm bốn dấu gạch chéo như thế này \\\ cho tôi –

+0

@Jamesandresakis: Thật khó để nói những gì bạn đang làm sai với rất ít thông tin. Tôi đoán là bạn đang nhìn vào chuỗi trong một trình gỡ lỗi, nơi nó có thể thoát nó cho bạn. –

1

Tôi muốn cung cấp đường dẫn đến JNI và nó chỉ đọc theo cách này.

Điều đó không đúng. Bạn chỉ cần hai dấu gạch chéo ngược trong chuỗi ký tự mà bạn khai báo bằng ngôn ngữ lập trình. Bạn không bao giờ phải thực hiện thay thế này khi chạy. Bạn cần phải suy nghĩ lại lý do tại sao bạn đang làm điều này.

2

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

String escaped = original.replaceAll("\\\\", "\\\\\\\\"); 
+0

p_p Tôi thấy lý do tại sao Jon Skeet nói không sử dụng replaceAll ... Oh Java ... – yarbelk

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