String s="averg王可可fdbsb额的办公室dfrbsbh";如何分离出中英文,如果里面含有数字又该如何处理,再就是谁能将String好好讲讲,很容易混淆

解决方案 »

  1.   

    写了两种做法,看漫步满足你的要求。
    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
    中文分段:
      王可可
      额的办公室
    其实两种做法都和正则表达式有关,具体的正则表达式的用法你可以参考相关资料。
      

  2.   


    String str = s.replaceAll("[^A-Z|a-z]+", "");
    System.out.println(str);非字母的全部替换掉
      

  3.   

    对,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]);
    }
    }
      

  4.   

    2楼已经给出了很详细的写法了,
    LZ可以多看下正则表过式的知识!
    关于String类,可以参考api文档,写一些常用方法的使用的实例。
      

  5.   


    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));
    }