java字符串中英文分离(探讨字符串处理) String s="averg王可可fdbsb额的办公室dfrbsbh";如何分离出中英文,如果里面含有数字又该如何处理,再就是谁能将String好好讲讲,很容易混淆 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 写了两种做法,看漫步满足你的要求。1,用字符串替换的方式,将不需要的字符替换成""public static void main(String[] args) { String s = "averg王可可fdbsb额的办公室dfrbsbh"; // 将所有的非英文字符串替换成“”,即可得到英文 String s1 = s.replaceAll("[^a-zA-Z]", ""); System.out.println("英文分段:" + s1); // 将所有的英文字符串替换成“”,即可得到中文 String s2 = s.replaceAll("[a-zA-Z]", ""); System.out.println("中文分段:" + s2); }输出是:英文分段:avergfdbsbdfrbsbh中文分段:王可可额的办公室2,利用正则表达式依次查找英文组合和非英文组合。public static void main(String[] args) { String s = "averg王可可fdbsb额的办公室dfrbsbh"; // 英文组合 Pattern p = Pattern.compile("[a-zA-Z]+"); Matcher m = p.matcher(s); System.out.println("英文分段:"); while (m.find()) { System.out.println(m.group()); } // 非英文组合 p = Pattern.compile("[^a-zA-Z]+"); m = p.matcher(s); System.out.println("中文分段:"); while (m.find()) { System.out.println(m.group()); } }输出结果:英文分段: averg fdbsb dfrbsbh中文分段: 王可可 额的办公室其实两种做法都和正则表达式有关,具体的正则表达式的用法你可以参考相关资料。 String str = s.replaceAll("[^A-Z|a-z]+", ""); System.out.println(str);非字母的全部替换掉 对,split + 正则也挺好public static void main(String[] args) { String s = "averg王可可fdbsb额的办公室dfrbsbh"; String[] sa = s.split("[^a-z|A-Z]+"); for (int i = 0; i < sa.length; i++) { System.out.println(sa[i]); } sa = s.split("[a-z|A-Z]+"); for (int i = 0; i < sa.length; i++) { System.out.println(sa[i]); } } 2楼已经给出了很详细的写法了,LZ可以多看下正则表过式的知识!关于String类,可以参考api文档,写一些常用方法的使用的实例。 String s = "averg王可可fdbsb额的办公室df12rbs23bh"; String regex = "(\\p{Alpha}*)([\\u4e00-\\u9fa5]*)(\\d*)"; Matcher m = Pattern.compile(regex).matcher(s); while (m.find()) { if (m.group(1).length() > 0) System.out.println(m.group(1)); if (m.group(2).length() > 0) System.out.println(m.group(2)); if (m.group(3).length() > 0) System.out.println(m.group(3)); } 求一个java正则表达式 几个小问题,挺有意思的,请来看看。 画的圆怎么出不来? java问题,请高手解决 sql server2000 与java连接问题 求大家解决一个现场实践问题 使用POI导出到EXCEL时,导出的数据量大时,EXCEL文件出错 我的Editplus打开含有中文的文档时,“汉字”都是躺着的,怎么让他们“立”起来?! 请问一下jbuilder里面的jpr和jpx有什么区别??谁告诉我呀?? 谁能给一个JBuilder4的序列号和key? 如何用SWT写个按钮,对应事件对弹出windows目录? 如何解析 牛津词典 mdx文件
1,用字符串替换的方式,将不需要的字符替换成""
public static void main(String[] args) {
String s = "averg王可可fdbsb额的办公室dfrbsbh";
// 将所有的非英文字符串替换成“”,即可得到英文
String s1 = s.replaceAll("[^a-zA-Z]", ""); System.out.println("英文分段:" + s1); // 将所有的英文字符串替换成“”,即可得到中文
String s2 = s.replaceAll("[a-zA-Z]", "");
System.out.println("中文分段:" + s2);
}
输出是:
英文分段:avergfdbsbdfrbsbh
中文分段:王可可额的办公室
2,利用正则表达式依次查找英文组合和非英文组合。
public static void main(String[] args) {
String s = "averg王可可fdbsb额的办公室dfrbsbh";
// 英文组合
Pattern p = Pattern.compile("[a-zA-Z]+");
Matcher m = p.matcher(s);
System.out.println("英文分段:");
while (m.find()) {
System.out.println(m.group());
} // 非英文组合
p = Pattern.compile("[^a-zA-Z]+");
m = p.matcher(s);
System.out.println("中文分段:");
while (m.find()) {
System.out.println(m.group());
}
}输出结果:
英文分段:
averg
fdbsb
dfrbsbh
中文分段:
王可可
额的办公室
其实两种做法都和正则表达式有关,具体的正则表达式的用法你可以参考相关资料。
String str = s.replaceAll("[^A-Z|a-z]+", "");
System.out.println(str);非字母的全部替换掉
public static void main(String[] args) {
String s = "averg王可可fdbsb额的办公室dfrbsbh";
String[] sa = s.split("[^a-z|A-Z]+");
for (int i = 0; i < sa.length; i++) {
System.out.println(sa[i]);
}
sa = s.split("[a-z|A-Z]+");
for (int i = 0; i < sa.length; i++) {
System.out.println(sa[i]);
}
}
LZ可以多看下正则表过式的知识!
关于String类,可以参考api文档,写一些常用方法的使用的实例。
String s = "averg王可可fdbsb额的办公室df12rbs23bh"; String regex = "(\\p{Alpha}*)([\\u4e00-\\u9fa5]*)(\\d*)";
Matcher m = Pattern.compile(regex).matcher(s);
while (m.find()) {
if (m.group(1).length() > 0)
System.out.println(m.group(1));
if (m.group(2).length() > 0)
System.out.println(m.group(2));
if (m.group(3).length() > 0)
System.out.println(m.group(3));
}