半角输入与全角的相互转化

后端校验
//全角空格为12288,半角空格为32
//其他字符半角(33-126)与考试.大提示全角(65281-65374)的对应关系是:均相差65248
/**
 * 全角转化半角
 * @param input
 * @return
 */
public static String toSemiangle(String input) {
    char c[] = input.toCharArray();
    for (int i = 0; i < c.length; i++) {
        if (c[i] == '\u3000') {
            c[i] = ' ';
        }
          else if (c[i] > '\uFF00' && c[i] < '\uFF5F') {
            c[i] = (char) (c[i] - 65248);
        }
    }
    return new String(c);
}

/**
 * 半角转全角
 * @param input
 * @return
 */
public static String zhuanQuanJiao(String input){
    char c[] = input.toCharArray();
    for ( int i=0; i<c.length;i++ ) {
        if (c[i] ==' ') {
            c[i] = '\u3000';
        }
        else if (c[i]<'\177') {
            c[i]= (char) (c[i]+65248);
        }
    }
    return new String(c);
}


有时由于用户的原因导致数据库的数据与当前输入状态不统一造成的错误,引发用户对系统的质疑,所以我们在处理数据的要有一个统一的标准来使我们的系统更加稳定,一般情况下都是全角转半角。

前端校验

<!DOCTYPE html>
<html>
<head>
<title></title>
<style type="text/css">
p{float: left;}
</style>
</head>
<body>
<p id="p1"></p>
<p>=>|转化半角后|=></p>
<p id="p2"></p>
</body>
</html>
<script type="text/javascript">
var str = "12345";
function toSemiangle(s){
var result = '';
for (i=0 ; i<s.length; i++){
code = s.charCodeAt(i);//获取当前字符的unicode编码
if (code >= 65281 && code <= 65373)//在这个unicode编码范围中的是所有的英文字母已经各种字符
{
result += String.fromCharCode(s.charCodeAt(i) - 65248);//把全角字符的unicode编码转换为对应半角字符的unicode码
}else if (code == 12288)//空格
{
result += String.fromCharCode(s.charCodeAt(i) - 12288 + 32);
}else
{
result += s.charAt(i);
}
}
return result;
}
document.getElementById('p1').innerHTML = str;
document.getElementById('p2').innerHTML = toSemiangle(str);
</script>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章