如何把一个字符串的中文和英文拆开 现在有一个字符串“中国china2009"我想把它拆成三个字符串,中国,china,2009用正则表达式如何去写呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 public class Test{ public static void main(String[] args){ String a = "中国china2009"; String[] strs = a.split(""); String hanzi = ""; String zimu = ""; String shuzi = ""; for(int i = 0;i<strs.length;i++){ int c = strs[i].hashCode(); if((c>=97 && c<=122)||(c>=65 && c<=90)){ zimu = zimu+strs[i]; }else if(c>=48&&c<=57){ shuzi = shuzi + strs[i]; }else{ hanzi = hanzi + strs[i]; } } System.out.println(hanzi); System.out.println(zimu); System.out.println(shuzi); } }[/code] 循环数组~~判断hashCode~~public class Test{ public static void main(String[] args){ String a = "中国china2009"; String[] strs = a.split(""); String hanzi = ""; String zimu = ""; String shuzi = ""; for(int i = 0;i<strs.length;i++){ int c = strs[i].hashCode(); if((c>=97 && c<=122)||(c>=65 && c<=90)){ zimu = zimu+strs[i]; }else if(c>=48&&c<=57){ shuzi = shuzi + strs[i]; }else{ hanzi = hanzi + strs[i]; } } System.out.println(hanzi); System.out.println(zimu); System.out.println(shuzi); } } <script> var strNum = "中国china2009".match(/([0-9]+)/g) alert(strNum ); var strChar = "中国china2009".match(/([a-zA-Z]+)/g) alert(strChar ); var strHanzi = "中国china2009".match(/([^0-9a-zA-Z]+)/g) alert(strHanzi ); </script> <script> var strNum = "中国china2009".match(/([0-9]+)/g) alert(strNum ); var strChar = "中国china2009".match(/([a-zA-Z]+)/g) alert(strChar ); var strHanzi = "中国china2009".match(/([^0-9a-zA-Z]+)/g) alert(strHanzi ); </script> 不好意思,以上用的是javascript语法,不过道理是一样的。 匹配汉字:[^x00-xff]匹配英文[a-zA-Z] or \m匹配数字[0-9] or \d public class Test4 { public static void main(String[] args) { String str = "中国china2009"; String[] strs = str.split("(?<!^)(?:(?<![a-zA-Z])(?=[a-zA-Z])|(?<![0-9])(?=[0-9])|(?<![\u4e00-\u9faf])(?=[\u4e00-\u9faf]))"); for(int i = 0; i < strs.length; i++) { System.out.println(strs[i]); } }} 1.用ASCII编码判断。2.用正则表达式匹配。 JAVA新手,8楼的代码不太懂。。郁闷 import java.util.regex.*;public class MyRegex2 { public static void main(String[] args) { String s="中国china2009"; /* * 匹配中文字符的正则表达式: [\u4e00-\u9fa5] * [a-zA-Z]*:表示英文字母有0个或多个 * \\d*:表示数字有0个或多个 */ Matcher m=Pattern.compile("([\u4e00-\u9fa5]*)([a-zA-Z]*)(\\d*)").matcher(s); if(m.find()){ //第一对小括号表示第一组,第二对小括号表示第二组... System.out.println(m.group(1)); System.out.println(m.group(2)); System.out.println(m.group(3)); } } } 请教一个关于JXL的问题 RMIJDBC异常问题 求最后个数的方法 email正则表达式检测 如何设置增加JAVA栈的容量,以防止内存溢出的问题 一个JAVA新手的困惑,希望高手指点迷津 多态性 怎样取得当前日期并把它存到数据库中?应把它声明为什么类型? 有那位大虾知道InstallAnywhere4.0的注册码? 关于链表的问题 谁帮我能解惑下 java里用集合和用数组哪个好 学Java的路程
public static void main(String[] args){
String a = "中国china2009";
String[] strs = a.split("");
String hanzi = "";
String zimu = "";
String shuzi = "";
for(int i = 0;i<strs.length;i++){
int c = strs[i].hashCode();
if((c>=97 && c<=122)||(c>=65 && c<=90)){
zimu = zimu+strs[i];
}else if(c>=48&&c<=57){
shuzi = shuzi + strs[i];
}else{
hanzi = hanzi + strs[i];
} }
System.out.println(hanzi);
System.out.println(zimu);
System.out.println(shuzi);
} }
[/code]
public static void main(String[] args){
String a = "中国china2009";
String[] strs = a.split("");
String hanzi = "";
String zimu = "";
String shuzi = "";
for(int i = 0;i<strs.length;i++){
int c = strs[i].hashCode();
if((c>=97 && c<=122)||(c>=65 && c<=90)){
zimu = zimu+strs[i];
}else if(c>=48&&c<=57){
shuzi = shuzi + strs[i];
}else{
hanzi = hanzi + strs[i];
} }
System.out.println(hanzi);
System.out.println(zimu);
System.out.println(shuzi);
} }
var strNum = "中国china2009".match(/([0-9]+)/g)
alert(strNum );
var strChar = "中国china2009".match(/([a-zA-Z]+)/g)
alert(strChar );
var strHanzi = "中国china2009".match(/([^0-9a-zA-Z]+)/g)
alert(strHanzi );
</script>
var strNum = "中国china2009".match(/([0-9]+)/g)
alert(strNum );
var strChar = "中国china2009".match(/([a-zA-Z]+)/g)
alert(strChar );
var strHanzi = "中国china2009".match(/([^0-9a-zA-Z]+)/g)
alert(strHanzi );
</script>
匹配英文[a-zA-Z] or \m
匹配数字[0-9] or \d
String str = "中国china2009";
String[] strs = str.split("(?<!^)(?:(?<![a-zA-Z])(?=[a-zA-Z])|(?<![0-9])(?=[0-9])|(?<![\u4e00-\u9faf])(?=[\u4e00-\u9faf]))");
for(int i = 0; i < strs.length; i++) {
System.out.println(strs[i]);
}
}
}
2.用正则表达式匹配。
public class MyRegex2 {
public static void main(String[] args) {
String s="中国china2009";
/*
* 匹配中文字符的正则表达式: [\u4e00-\u9fa5]
* [a-zA-Z]*:表示英文字母有0个或多个
* \\d*:表示数字有0个或多个
*/
Matcher m=Pattern.compile("([\u4e00-\u9fa5]*)([a-zA-Z]*)(\\d*)").matcher(s);
if(m.find()){
//第一对小括号表示第一组,第二对小括号表示第二组...
System.out.println(m.group(1));
System.out.println(m.group(2));
System.out.println(m.group(3));
}
}
}