2014-04-06 25 views
1

我有这样如何替换java中的特定字符串?

Data 
Dun&BradStreet 
Dunkin & Donut 

这里数据是列的“标头”的CSV文件。

我使用的编码,并更换为

String encodedUrl = URLEncoder.encode(data[i], "UTF-8"); 
String data = encodedUrl.replaceAll("%2B","+"); 

所需的结果

Data 
Dun&BradStreet 
Dunkin+%26+Donut 

输出

Data 
Dun%26BradStreet 
Dunkin+%26+Donut 

如何保持 '&' 如果没有'&当空间' 存在? 任何帮助表示赞赏。提前致谢。

+0

你打算把这个信息放在一个URL中吗?如果是这样,'&'应该按照http://www.ietf.org/rfc/rfc1738.txt进行编码,除非您以特殊方式使用它(如分隔名称 - 值对)。如果你没有把它放在URL中,你为什么使用URLEncoder.encode? – lreeder

+0

@lreeder:是的,我打算输入一个URL。所以这就是为什么我需要知道如何在不替换'&'的情况下进行编码(如第一种情况)?我感谢任何帮助。 – user3188390

+1

如果你想把第一个值也放在URL中,它也需要被编码。 – sidgate

回答

1

你可以replace()像这样做,

String in = "Data\nDun&BradStreet\nDunkin & Donut"; 
System.out.println(in.replace(" & ", "+%26+")); 

输出为“期望的结果” -

Data 
Dun&BradStreet 
Dunkin+%26+Donut 
1

,如果前后有一次或多次的空间你可以试试这个&。

这里\\s+代表一个或多个空格。阅读更多关于Java Regex Pattern

String str = data[i].replaceAll("\\s+&\\s+", "+%26+");