java全角、半角字符的關(guān)系以及轉(zhuǎn)換詳解
如果搞明白了Java中全角字符和半角字符之間的關(guān)系
那他們之間的轉(zhuǎn)換根本就不是個(gè)事.
全角字符與半角字符的關(guān)系
可以通過(guò)下面的程序看看Java中所有字符以及對(duì)應(yīng)編碼的值
public static void main(String[] args) {
for (int i = Character.MIN_VALUE; i <= Character.MAX_VALUE; ++i) {
System.out.println(i + " " + (char)i);
}
}
從輸出可以看到
1.半角字符是從33開(kāi)始到126結(jié)束
2.與半角字符對(duì)應(yīng)的全角字符是從65281開(kāi)始到65374結(jié)束
3.其中半角的空格是32.對(duì)應(yīng)的全角空格是12288
半角和全角的關(guān)系很明顯,除空格外的字符偏移量是65248(65281-33 = 65248)
Java語(yǔ)言實(shí)現(xiàn)全角、半角之間的轉(zhuǎn)換
了解了全半角字符之間的關(guān)系,再來(lái)看看Java的實(shí)現(xiàn)
/**
* 全角字符串轉(zhuǎn)換半角字符串
*
* @param fullWidthStr
* 非空的全角字符串
* @return 半角字符串
*/
private static String fullWidth2halfWidth(String fullWidthStr) {
if (null == fullWidthStr || fullWidthStr.length() <= 0) {
return "";
}
char[] charArray = fullWidthStr.toCharArray();
//對(duì)全角字符轉(zhuǎn)換的char數(shù)組遍歷
for (int i = 0; i < charArray.length; ++i) {
int charIntValue = (int) charArray[i];
//如果符合轉(zhuǎn)換關(guān)系,將對(duì)應(yīng)下標(biāo)之間減掉偏移量65248;如果是空格的話(huà),直接做轉(zhuǎn)換
if (charIntValue >= 65281 && charIntValue <= 65374) {
charArray[i] = (char) (charIntValue - 65248);
} else if (charIntValue == 12288) {
charArray[i] = (char) 32;
}
}
return new String(charArray);
}
相關(guān)文章
java實(shí)現(xiàn)監(jiān)控rtsp流轉(zhuǎn)flv方法實(shí)例(前端播放,前后端代碼都有)
這篇文章主要給大家介紹了關(guān)于java實(shí)現(xiàn)監(jiān)控rtsp流轉(zhuǎn)flv的相關(guān)資料,文中介紹的是前端播放,前后端代碼都有,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06Java實(shí)現(xiàn)的打地鼠小游戲完整示例【附源碼下載】
這篇文章主要介紹了Java實(shí)現(xiàn)的打地鼠小游戲,結(jié)合完整實(shí)例形式分析了Java多線(xiàn)程操作及鍵盤(pán)按鍵響應(yīng)實(shí)現(xiàn)的打地鼠游戲功能相關(guān)操作技巧,需要的朋友可以參考下2018-07-07Java并發(fā)編程示例(五):線(xiàn)程休眠與恢復(fù)
這篇文章主要介紹了Java并發(fā)編程示例(五):線(xiàn)程休眠與恢復(fù),在本節(jié),我們將開(kāi)發(fā)一個(gè)程序,使用sleep()方法來(lái)實(shí)現(xiàn)每秒鐘打印一次當(dāng)前時(shí)間,需要的朋友可以參考下2014-12-12SpringBoot編譯target目錄下沒(méi)有resource下的文件踩坑記錄
這篇文章主要介紹了SpringBoot編譯target目錄下沒(méi)有resource下的文件踩坑記錄,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08IDEA?下?Gradle?刪除多余無(wú)用依賴(lài)的處理方法
這篇文章主要介紹了IDEA下Gradle刪除多余無(wú)用依賴(lài),使用該插件可以一定程度上幫助我們刪除無(wú)用依賴(lài),但是也可能會(huì)多刪除有用的依賴(lài),需要在使用插件自動(dòng)修復(fù)后手動(dòng)檢測(cè)項(xiàng)目,驗(yàn)證是否會(huì)出現(xiàn)問(wèn)題,避免導(dǎo)致上線(xiàn)發(fā)布錯(cuò)誤的負(fù)優(yōu)化2022-03-03Mybatis 動(dòng)態(tài)SQL搭建環(huán)境的全過(guò)程
這篇文章主要給大家介紹了關(guān)于Mybatis動(dòng)態(tài)SQL搭建環(huán)境的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05SpringBoot+OCR?實(shí)現(xiàn)圖片文字識(shí)別
本文主要介紹了SpringBoot+OCR 實(shí)現(xiàn)圖片文字識(shí)別,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12