/**
 * 过滤全角字符。
 * 创建日期:
 * 方法说明:把全角转成半角
 */
public static String getDBCCase(String str) {
    String ret = "";
    for (int i = 0; i < str.length(); i++) {
        int j = str.charAt(i);
        int temp = j - 65248;
        if (temp > 0)
            ret += (char) temp;
        else
            ret += (char) j;
    }    return ret;}
}
楼主反着用 就改成int temp = j + 65248;试试

解决方案 »

  1.   

    看了blue999star(星星要挣钱,养老婆) ( )兄,改了一下,你试一下
    public Class Test1{
      public static String getDBCCase_Op(String str) {
          String ret = "";
          for (int i = 0; i < str.length(); i++) {
            int j = str.charAt(i);
            if(j<256 && j>-1){              int temp = j + 65248;
               if (temp > 0)
                   ret += (char) temp;
               else
                   ret += (char) j;
            }else
               ret += (char) j;
          }
          return ret;
       }
        public static void main(String[] args){
            String str="abbbc你好aac";
            System.out.println("before:"+str);
            System.out.println(Test1.getDBCCase_Op(str));
        }
    }
      

  2.   

    为什么要转换成全角的?迷惑ing
    如果是某些半角字符会影响WEB程序的话,只要替换成相应的Html码就OK了.
    下面是我以前写的,可能会比较粗糙,你自己改改吧/*
     *修改在Html页面中可能发现关于以下特殊标点和字符可能会错误& \ ' < >
     */
    public static String encondHtmlChars(String s)
    {
    StringBuffer buf = new StringBuffer(s);
    int i=0;
    while (i<buf.length())
    {
    if (buf.charAt(i)=='&')
    {
    System.out.println("replace!");
    buf.deleteCharAt(i);
    buf.insert(i,"&amp;");
    i+=4;
    }
    else if (buf.charAt(i)=='"')
    {
    System.out.println("replace!");
    buf.deleteCharAt(i);
    buf.insert(i,"&quot;");
    i+=5;
    }
    else if (buf.charAt(i)=='\'')
    {
    System.out.println("replace!");
    buf.deleteCharAt(i);
    buf.insert(i,"&#039;");
    i+=5;
    }
    else if (buf.charAt(i)=='<')
    {
    System.out.println("replace!");
    buf.deleteCharAt(i);
    buf.insert(i,"&lt;");
    i+=3;
    }
    else if (buf.charAt(i)=='>')
    {
    System.out.println("replace!");
    buf.deleteCharAt(i);

    buf.insert(i,"&gt;");
    i+=3;
    }
    i++;
    System.out.println(buf.toString());
    }
    return buf.toString();
    }
      

  3.   

    我再问一下,我要想让input text中只能半角输入,该怎么办?主要我想让它输入数字
      

  4.   

    blue999star(星星要挣钱,养老婆)的方法好用,可是我想在javascrip中该添加控制函数,其中(char)强制转换在javascrip怎么写呀?
      

  5.   

    function checkMobile(){
    var re = new RegExp("13([5-9]{1})([0-9]{8})","ig");//只能中国移动用户能够使用,范围13500000000-13999999999
    var flag = true;
    if(!re.test(mobile.mp_no.value)){
    flag = false;
    alert("很抱歉,你输入的手机号码错误或该号码不在我们的服务范围,请重新输入。");
    mobile.mp_no.focus();
    }
    else{
    var url = "http://sms.xxx.com/.....";
    mywin = window.open(url,'sendjnh');
    }
    return (flag);
    }
      

  6.   

    你可以用转换函数replace(Str, " ", " ");
    这样就可以了。
      

  7.   

    function isNumber( data )
    {
      var tempStr = "0123456789" ;
      var thisChar ;
      for( var i=0 ; i < data.length ; i++ )
      {
    thisChar = data.substring( i, i+1 ) ;
    if ( tempStr.indexOf(thisChar, 0) == -1 )
    {
      return( false ) ;
    }
      }
      return( true ) ;
    }
    用来判断是否为数字的
    function isQujiao(str)
    {   
        for(i=0;i<str.length;i++) {
        var code = escape(str.charAt(i));
    if ((code.length >= 4) && (code < '%uFF60' || code > '%uFF9F')) 
    {
        continue;
    }
    else
            {
               return false;
            }
    }
    return true;
    }
    判断是否为全角的(不是全角自然是半角了)
      

  8.   

    private static String com_ChgStringA(String str) throws IllegalArgumentException {

    // 引数为null时,抛出异常
    if (str == null) {
    throw(new IllegalArgumentException(ERROR_NULL_ARGUNMENT));
    }

    // 引数为空时,返回空字符串
    if (str.equals("")) {
    return (new String(str));
    }

    char[] chars = str.toCharArray( );
    int length = chars.length;

    StringBuffer sb = new StringBuffer( );

    boolean breakFlag;

    for (int i = 0; i < length; i++) {
    breakFlag = false;

    if (Character.isISOControl(chars[i])) {
    sb.append(chars[i]);
    } else if ('\u0021' <= chars[i] && chars[i] <= '\u007e') {
    sb.append((char)(chars[i] + 0xfee0));
    } else if ('\u0020' == chars[i]) {
    sb.append('\u3000');
    } else {
    String value = String.valueOf(chars[i]);

    for (int m = 0; m < HANKAKU_KATAKANA.length; m++) {
    for (int n = 0; n < HANKAKU_KATAKANA[m].length; n++) {
    if (value.equals(HANKAKU_KATAKANA[m][n])) {

    if ((7 <= m && m <= 11) && i != length-1) {

    if (chars[i+1] == '゛') {

    sb.append(ZENKAKU_KATAKANA[m+5][n]);

    i++;
    } else if (chars[i+1] == '゜') {

        sb.append(ZENKAKU_KATAKANA[m+7][n]);
        
        i++;
    } else {

    sb.append(ZENKAKU_KATAKANA[m][n]);
    }
    } else {

         sb.append(ZENKAKU_KATAKANA[m][n]);
    }

    breakFlag = true;
    break;
    }
    }
    }
    if (!breakFlag) {
    sb.append(chars[i]);
    }
    }
    }
    return sb.toString( );
    }
      

  9.   

    谁能将以下代码用javascript的function实现。
    public static String getDBCCase(String str) {
        String ret = "";
        for (int i = 0; i < str.length(); i++) {
            int j = str.charAt(i);
            int temp = j - 65248;
            if (temp > 0)
                ret += (char) temp;
            else
                ret += (char) j;
        }    return ret;}
    }
      

  10.   

    呜呜……
    我真的找了,而且上网上查了,java中的 ret += (char) temp; 我实在没有找到在jscript中和它相对应的。
      

  11.   

    用JavaBean啊,JS这种东西又不安全的,用户可以轻易跳过。:)