从数据库中读出来的数据,如何检查全角半角?

解决方案 »

  1.   

    if(str.getBytes().length==string.length){
    全是半角
    }
    if(str.getBytes().length > str.length && str.getBytes().length != str.length){
    混合
    }
    if(str.getBytes().length == str.length *2){
    全是全角
    }
      

  2.   

    if(str.getBytes().length > str.length && str.getBytes().length != str.length){
    混合
    }
    这是何意?
      

  3.   

    public static boolean isAllHalf(String param) {
    char[] chs = param.toCharArray();
    for (int i = 0; i < chs.length; i++) {
    if (!(('\uFF61' <= chs[i]) && (chs[i] <= '\uFF9F'))
    && !(('\u0020' <= chs[i]) && (chs[i] <= '\u007E'))) {
    return false;
    }
    } return true;
    }
      

  4.   

    if(str.getBytes().length > str.length && str.getBytes().length != str.length){
    混合
    }
    这是何意?
    ------------------------------------------
    如果是全角 编码为2个字节 半角为一个字节
    如果两者皆有的话,那么满足
    (str.getBytes().length < str.length*2) && (str.getBytes().length > str.length)
    与上面的逻辑等价
      

  5.   

    附上测试类:
    -----------------------------
    public class FullHalf {
    public static void main(String args[]) {
    String str = ",,??你";
    String str2 = ",,,";
    String str3 =":::";
    fullHalf(str);
    fullHalf(str2);
    fullHalf(str3);
    }
      private static void fullHalf(String str) {
       if(str.getBytes().length == str.length())
         System.out.println("Half");
       if(str.getBytes().length == str.length()*2)
         System.out.println("Full");
       if(str.getBytes().length < str.length()*2 && str.getBytes().length > str.length())
         System.out.println("Mix");
        }
    }
      

  6.   

    嗬嗬,谢谢大家!
    下面是我同时帮忙写的一个,看一下import java.io.UnsupportedEncodingException;public class CharacterTest {    public static void main(String[] args) {
         char inputs[] = {'1','1','タ','a'};
         for (int i = 0; i < inputs.length; i++) {
    System.out.println(isFull(inputs[i]));            
            }    
            
    for (int i = 0; i < inputs.length; i++) {
    System.out.println(isFull2(inputs[i]));            
    }        
        }
        
        private static boolean isFull(char ch){
         String str = new String(new char[]{ch});    
         try {
                byte[] buf = str.getBytes("UTF-16");
                if(buf[2]!=0) return true;            
            }
            catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
    return false;       
        }
        
    private static boolean isFull2(char ch){
    String str = new String(new char[]{ch});    
    byte[] buf = str.getBytes();
    if(buf.length != 1) return true;            
    return false;       
    }    
    }返回
    false
    true
    true
    true
      

  7.   

    用我的那个吧,因为我们公司就是做日本外包项目的。这个就可以
    public static boolean isAllHalf(String param) {
    char[] chs = param.toCharArray();
    for (int i = 0; i < chs.length; i++) {
    if (!(('\uFF61' <= chs[i]) && (chs[i] <= '\uFF9F'))
    && !(('\u0020' <= chs[i]) && (chs[i] <= '\u007E'))) {
    return false;
    }
    } return true;
    }