2012-05-17 42 views
5

Tôi đang tìm một giải pháp để chuyển đổi các chuỗi char như '\' 'n' thành '\ n' mà không cần viết một lệnh chuyển đổi cho tất cả các khoảng trắng có thể như ('\ t', '\ r ',' \ n ', v.v.)Trình tự char khoảng trắng vào khoảng trắng

Có điều gì đó tích hợp hoặc lừa thông minh để làm điều đó không?

+2

Bạn có thể sử dụng [Apache Commons Lang] (http: // commons.apache.org/lang/) [StringEscapeUtils] (http://commons.apache.org/lang/api-release/org/apache/commons/lang3/StringEscapeUtils.html). – McDowell

+0

Khó hiểu đầy đủ câu hỏi. Bạn có thể cung cấp một số đầu vào và đầu ra dự kiến ​​không? – anubhava

+0

có thể trùng lặp của [Làm thế nào để hủy cảnh báo chuỗi Java trong Java] (http://stackoverflow.com/questions/3537706/howto-unescape-a-java-string-literal-in-java) –

Trả lời

3

Không, sau khi được biên dịch, "\\n" không liên quan gì với "\n" afaik. Tôi sẽ đề nghị làm một cái gì đó như sau:

tinh khiết Java:

String input = "\\n hello \\t world \\r"; 

String from = "ntrf"; 
String to = "\n\t\r\f"; 
Matcher m = Pattern.compile("\\\\(["+from+"])").matcher(input); 
StringBuffer sb = new StringBuffer(); 
while (m.find()) 
    m.appendReplacement(sb, "" + to.charAt(from.indexOf(m.group(1)))); 
m.appendTail(sb); 

System.out.println(sb.toString()); 

Sử dụng Apache Commons StringEscapeUtils:

import org.apache.commons.lang3.StringEscapeUtils; 

... 

System.out.println(StringEscapeUtils.unescapeJava(input)); 
Các vấn đề liên quan