linux将文件内容全角转半角,字符串半角全角互转详解
全角和半角之间的互相转换。
ASCII的一些知识。
\n 回车换行
\t 横向跳到下一制表位置
\v 竖向跳格
\b 退格
\r 回车
\f 走纸换页
\\ 反斜线符"\"
\' 单引号符
\ddd 1~3位八进制数所代表的字符
\xhh 1~2位十六进制数所代表的字符
空格的ASCII是32,转换为16进制是x20,使用转义字符为 \x20
ASCII码表
下面贴代码,在参考别人的基础上另作整理。
package com.kongming.someuseful;
/**
* @author ACER
*
* 实现对字符串中全角字符和半角字符的互相转换
*/
public class QuanJiao_BanJiao_Transform {
// ASCII表中可见字符从!开始,值为33(Decimal),半角对应字符为 !
static final char DBC_CHAR_START = 33;
// ASCII表中可见字符到~结束,值为126(Decimal),半角对应字符为 ~
static final char DBC_CHAR_END = 126;
// 全角对应于ASCII表的可见字符从!开始,值为65281 ,全角对应字符为 !
static final char SBC_CHAR_START = 65281;
// 全角对应于ASCII表的可见字符到~结束,值为65374,全角对应字符为 ~
static final char SBC_CHAR_END = 65374;
// ASCII表中除空格外的可见字符与对应的全角字符的相对偏移,全角半角转换偏移量为65248
static final int CONVERT_STEP = 65248;
// 全角空格的值,没有遵循上面说的ASCII的相对偏移量,必须单独处理,全角空格 ASCII值为12288
static final char SBC_SPACE = 12288;
// 半角空格的值,ASCII值为32(Decimal),半角空格 ' '
static final char DBC_SPACE = 32;
/**
* --半角字符转为全角字符
*
* @param src
* 包含半角字符的字符串
* @return 返回全角字符的字符串
*/
public static String bj2qj(String src) {
if (src == null) {
return src;
}
StringBuilder buf = new StringBuilder(src.length());
char[] ca = src.toCharArray();
for (int i = 0; i < ca.length; i++) {
// 如果是半角空格,直接用全角空格替代
if (ca[i] == DBC_SPACE) {
buf.append(SBC_SPACE);
// 字符是!到~之间的可见字符
} else if ((ca[i] >= DBC_CHAR_START) && (ca[i] <= DBC_CHAR_END)) {
buf.append((char) (ca[i] + CONVERT_STEP));
// 不对空格以及ascii表中其他可见字符之外的字符做任何处理
} else {
buf.append(ca[i]);
}
}
return buf.toString();
}
/**
* --全角字符转为半角字符
*
* @param src
* 包含全角字符的字符串
* @return 返回半角字符的字符串
*/
public static String qj2bj(String src) {
if (src == null) {
return src;
}
StringBuilder buf = new StringBuilder(src.length());
char[] ca = src.toCharArray();
for (int i = 0; i < src.length(); i++) {
// 如果位于全角!到全角~区间内
if (ca[i] >= SBC_CHAR_START && ca[i] <= SBC_CHAR_END) {
buf.append((char) (ca[i] - CONVERT_STEP));
// 如果是全角空格
} else if (ca[i] == SBC_SPACE) {
buf.append(DBC_SPACE);
// 不处理全角空格,全角!到全角~区间外的字符
} else {
buf.append(ca[i]);
}
}
return buf.toString();
}
// 测试
public static void main(String[] args) {
String qj = "kmsocial,周杰。. -。-";
String bj = "kmsocial,周杰. -.-";
String qj2bj = QuanJiao_BanJiao_Transform.qj2bj(qj);
String bj2qj = QuanJiao_BanJiao_Transform.bj2qj(bj);
System.out.println("转换前:" + qj + "\n转换后:" + qj2bj);
System.out.println("转换前:" + bj + "\n转换后:" + bj2qj);
}
}
linux将文件内容全角转半角,字符串半角全角互转详解相关推荐
- Linux查找文件内容
2019独角兽企业重金招聘Python工程师标准>>> Linux查找文件内容 使用vim命令查找文件内容 我们可以使用/string命令来向前(Forward)查找字符串strin ...
- Linux清空文件内容的三种方法
Linux清空文件内容的三种方法 测试文件:a.txt 第一种: $> a.txt 第二种: $echo "" > a.txt 第三种: $cat /dev/null ...
- linux清空文件内容的几种方式与区别
虽然linux清空文件内容的方式有很多种,但是他们之间有着细微的差别.通过实践我将他们分为两类: 将文件清空,文件大小为0k $ : > filename $ > filename $ ...
- Linux查看文件内容命令:cat, tail, head, more, less
Linux查看文件内容命令:cat, tail, head, more, less cat 直接显示整个文件. cat直接显示全部文件内容,没有换页等交互. cat filename more mor ...
- linux 查找html文件,linux查找文件内容包含
如何在Linux下查找文件内容包含某个特定字符串的文件 怎样在Linux下查找文件内容包含某个特定字符串的文如何在Linux下查找文件内容包含某个特定字符串的文件? 我的目录下面有test1和test ...
- Linux查看文件内容的6种命令
链接一(6种): Linux中几种常用的查看文件内容的命令(file,cat,more,less,head,tail) - 空谷幽兰~泊逸 - 博客园Linux中有几个命令可以查看文件的内容,而不需要 ...
- linux检查新增文件,linux查看文件内容
linux查看文件内容 cat 由第一行开始显示档案内容 tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写! nl 显示的时候,顺道输出行号! more 一页一页的显示档案内容 ...
- linux清除文件内容 ,Linux清除文件内容的几种方法
# 清空或删除大文件内容的五种方法: # 法一:通过重定向到 Null 来清空文件内容 $ >test.sh # 法二:使用 'true' 命令重定向来清空文件 $ true > test ...
- python excel库pip install_超全整理|Python 操作 Excel 库 xlwings 常用操作详解!
原标题:超全整理|Python 操作 Excel 库 xlwings 常用操作详解! 来源:早起Python 作者:陈熹.刘早起 大家好,我是早起. 在之前的文章中我们曾详细的讲解了如何使用openp ...
- python 文件读写with open模式r,r+ w,w+ a,a+区别详解
python 文件读写with open模式r,r+ w,w+ a,a+区别详解 python中的 with open主要要来进行文件读写的操作 在 Python 中使用文件的关键函数是 open() ...
最新文章
- 关于如何在pc端使用github
- 如何释放 DB_RECOVERY_FILE_DEST_SIZE
- SQL中truncate table和delete的区别
- 05_传智播客iOS视频教程_类对象的使用
- mit oracle hd120,【出】MIT Oracle Matrix HD100 喇叭线 10呎
- 体育直播软件发展的三个阶段
- sklearn自学指南(part31)--半监督学习
- c语言二进制转十六进制编程,哪位大神有 二进制转十六进制C语言程序
- matlab ,python,c++关于格式化输出数字的表达
- python之字符串连接
- 高品质UI设计模板|PSD下载,设计师的最佳临摹素材
- 清华排名首登亚洲第一,今年财务预算300亿
- hive對於數據是懶加載的_05-配置数据库的远程连接 创建hive数据库的时候要选择latin1...
- 桌面支持--outlook会议邀请(选择可选参加的领导)
- 《自己动手写网络爬虫》读书笔记——宽度优先爬虫和带偏好的爬虫
- Android 车载应用开发与分析(12) - SystemUI (一)
- java播放mp3/ogg/ape/flac音乐
- virtual box ubuntu20.04 ros安装摄像头驱动
- linux 开发面试---基础题1
- 和自然语言处理有关的英语_自然语言处理对非英语语言的重要性
热门文章
- python计算二次方程的实根
- IOS开发教程第一季之02UI进阶day8合并IOS学习019--敲击、长按、轻扫、旋转,CALayer、锚点,CADisolayLink刷新,核心动画,关键帧动画,组动画,转场动画,画板案例
- linux中kill命令默认发出的信号,linux中的kill命令的详细解释
- java计算机毕业设计公司薪酬管理系统源码+mysql数据库+系统+lw文档+部署
- Mac 上 设置 语音呼出Siri
- 【STM32】FreeRTOS任务基础
- 你和阿里巴巴员工的编程水平差几个等级?
- bibtex参考文章类型
- keil C51如何下载stc固件库
- 网工学习 管理常用命令ipconfig ping tracert pathping ARP netstat route nslookup