请教大家,已知一个字符串,中有汉字,字母,数字和特殊字符等,如何从这个字符串中取出所有汉字呢。谢谢大家!

解决方案 »

  1.   

    >"~"  就是汉字
    <"~"  就是字符
      

  2.   

    我也想用正则表达式,可是汉字如何用正则表达式呢,在正则里有POSIX 字符类(仅 US-ASCII),因为汉字是非ascii的,可是这个字符类不会用呀,我刚想到了另外的一个方法,可是不太好。
    public static void main(String[] args) {
    String str="sa我e3爱  你r#|c";
    String newStr="";
    for(int i=0;i<str.length();i++){
    if(Character.isLetter((str.charAt(i)))&&(!Character.isLowerCase((str.charAt(i))))&&(!Character.isUpperCase((str.charAt(i))))){
    newStr=newStr.concat(str.substring(i,i+1));
    }
    }
    System.out.println("new :"+newStr);
    }
    这样取letter就可以把汉字和字母全取出来,再去掉字母。这样总觉得有BUG
      

  3.   

    public class AB {
    public static void main(String[] args) {
    String str = "sa汉字e3中国人r#|c";
    String newStr = "";
    for(int j = 0;j < str.length();j++){
    newStr = str.substring(j,j+1);
    boolean cc = java.util.regex.Pattern.matches("[\u4E00-\u9FA5]", newStr);
    if(cc){
    System.out.print(newStr);
    }
    }
    }
    }
      

  4.   


    public static void main(String[] args) {
    String str = "sa汉字e3中国人r#|c";
    System.out.println(str.replaceAll("[^\u4E00-\u9FA5]", ""));
    }
      

  5.   

    class SteingDemo{
      public void getString(String s){
           int a=s.length();
           String ss="";
           for(int i=0;i<a;i++){
                byte[] by=s.charAt(i).getBytes();
                if(by.length==2){
                 ss+=s.indexOf(i);
                System.out.println("输出汉字"+s.charAt(i))
                }else{
                  continu;
                }
                if(i=a-1)
                 return ss;
           }
        }
      

  6.   

    String text="我shi快乐的汉字?";
    char[] textChar=text.toCharArray();
    for(int i=0;i<textChar.length;i++){
      int nc=(char)textChar[i];
      if(nc>=0x4e00&&nc<=0x9fa5)
       System.out.println("我是快乐的汉字:"+textChar[i]);
    }
    呵呵,同意5楼的
      

  7.   

    多了个(char)