正则只替换URL字符串里面的汉字部分
2008-09-17 07:41
267 查看
原文地址: http://www.java2000.net/p9806
URL为 http://192.168.1.1:8080/resources/电话.xls 如果使用 URLEncoder.encode 将会把冒号等一块给替换了
http%3A%2F%2F192.168.1.1%3A8080%2Fresources%2F%E7%94%B5%E8%AF%9D.xls
这并不是我们需要的,我们只希望替换编码里面中文的部分,这里给出了解决方法,很简单
package log;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 正则替换字符串里面的汉字部分。
*
* @author 赵学庆 www.java2000.net
*/
public class URLEncoderHZ {
public static void main(String[] args) throws Exception {
String str = "http://192.168.1.1:8080/resources/电话.xls";
System.out.println(encode(str, "UTF-8"));
}
private static String zhPattern = "[/u4e00-/u9fa5]+";
/**
* 替换字符串卷
*
* @param str 被替换的字符串
* @param charset 字符集
* @return 替换好的
* @throws UnsupportedEncodingException 不支持的字符集
*/
public static String encode(String str, String charset) throws UnsupportedEncodingException {
Pattern p = Pattern.compile(zhPattern);
Matcher m = p.matcher(str);
StringBuffer b = new StringBuffer();
while (m.find()) {
m.appendReplacement(b, URLEncoder.encode(m.group(0), charset));
}
m.appendTail(b);
return b.toString();
}
}
运行结果
http://192.168.1.1:8080/resources/%E7%94%B5%E8%AF%9D.xls
URL为 http://192.168.1.1:8080/resources/电话.xls 如果使用 URLEncoder.encode 将会把冒号等一块给替换了
http%3A%2F%2F192.168.1.1%3A8080%2Fresources%2F%E7%94%B5%E8%AF%9D.xls
这并不是我们需要的,我们只希望替换编码里面中文的部分,这里给出了解决方法,很简单
package log;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 正则替换字符串里面的汉字部分。
*
* @author 赵学庆 www.java2000.net
*/
public class URLEncoderHZ {
public static void main(String[] args) throws Exception {
String str = "http://192.168.1.1:8080/resources/电话.xls";
System.out.println(encode(str, "UTF-8"));
}
private static String zhPattern = "[/u4e00-/u9fa5]+";
/**
* 替换字符串卷
*
* @param str 被替换的字符串
* @param charset 字符集
* @return 替换好的
* @throws UnsupportedEncodingException 不支持的字符集
*/
public static String encode(String str, String charset) throws UnsupportedEncodingException {
Pattern p = Pattern.compile(zhPattern);
Matcher m = p.matcher(str);
StringBuffer b = new StringBuffer();
while (m.find()) {
m.appendReplacement(b, URLEncoder.encode(m.group(0), charset));
}
m.appendTail(b);
return b.toString();
}
}
运行结果
http://192.168.1.1:8080/resources/%E7%94%B5%E8%AF%9D.xls
相关文章推荐
- 正则只替换URL字符串里面的汉字部分
- 正则只替换URL字符串里面的汉字部分(转载CSDN)
- 替换string中的部分字符串 关键时候还得正则出马。。。。
- C#正则表达式提取字符串汉字部分
- Java里面通过正则表达式来实现字符串替换
- 利用正则表达式 替换字符串中多个 URL
- 用正则表达式判断字符串是汉字还是拼音的js函数代码
- 截取固定长度字符串显示在页面,多余部分显示为省略号(区分汉字和字符)
- 在Vi里面实现字符串的批量替换
- javascript将字符串中的多个空格替换为一个空格的正则实例
- java用正则表达式判断字符串中是否仅包含英文字母、数字和汉字
- python正则表达式使用实例-替换字符串HTML标签
- SQL Server中利用正则表达式替换字符串
- T-SQL中利用简单正则查找字符串中的数字部分
- 怎么在notepad里面,将字符串替换成换行
- 还为WORD替换特殊字符串烦恼吗?请使用word通配符其实和正则表达式很类似,学会使用起到事半功倍的效果!
- sed替换字符串时,使用正则表达式的注意事项
- js字符串替换的正则表达式如何动态生成
- EditPlus正则表达式替换字符串
- Linux C 支持正则表达式的字符串替换函数