首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >java字符全角半角转换

java字符全角半角转换

作者头像
code4it
发布于 2018-09-17 06:51:46
发布于 2018-09-17 06:51:46
2.3K00
代码可运行
举报
文章被收录于专栏:码匠的流水账码匠的流水账
运行总次数:0
代码可运行

本文展示一下如何将char进行半角与全角转换。

术语

全角

  • SBC case
  • Sexagesimal to Binary Converter
  • 60进制转为2进制 半角
  • DBC case
  • Decimal to Binary Converter
  • 10进制转为2进制

工具类

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class AsciiUtil {

    public static final char SBC_SPACE = 12288; // 全角空格 12288

    public static final char DBC_SPACE = 32; //半角空格 32

    // ASCII character 33-126 <-> unicode 65281-65374
    public static final char ASCII_START = 33;

    public static final char ASCII_END = 126;

    public static final char UNICODE_START = 65281;

    public static final char UNICODE_END = 65374;

    public static final char DBC_SBC_STEP = 65248; // 全角半角转换间隔

    public static char sbc2dbc(char src){
        if (src == SBC_SPACE) {
            return DBC_SPACE;
        }

        if (src >= UNICODE_START && src <= UNICODE_END) {
            return (char) (src - DBC_SBC_STEP);
        }

        return src;
    }

    /**
     * Convert from SBC case to DBC case
     *
     * @param src
     * @return DBC case
     */
    public static String sbc2dbcCase(String src) {
        if (src == null) {
            return null;
        }
        char[] c = src.toCharArray();
        for (int i = 0; i < c.length; i++) {
            c[i] = sbc2dbc(c[i]);
        }
        return new String(c);
    }

    public static char dbc2sbc(char src){
        if (src == DBC_SPACE) {
            return SBC_SPACE;
        }
        if (src <= ASCII_END) {
            return (char) (src + DBC_SBC_STEP);
        }
        return src;
    }

    /**
     * Convert from DBC case to SBC case.
     *
     * @param src
     * @return SBC case string
     */
    public static String dbc2sbcCase(String src) {
        if (src == null) {
            return null;
        }

        char[] c = src.toCharArray();
        for (int i = 0; i < c.length; i++) {
            c[i] = dbc2sbc(c[i]);
        }

        return new String(c);
    }
}

验证

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Test
    public void testDBC(){
        System.out.println(AsciiUtil.sbc2dbcCase("hello world"));
        System.out.println(AsciiUtil.dbc2sbcCase("hello world"));
    }

输出

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
hello world
hello world

doc

  • Java工具类——全角半角字符相互转换
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-08-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码匠的流水账 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
java全角半角标点符号转换
早上发现某个群居然爆出一个bug,上游系统存储的客户简称是商务人员自己填的,这个字段支持用户录入各种字符。但是下游对接的其他系统,在将这个字段应用到系统中的时候,不能支持全角的标点符号,如果这个字段有全角标点符号,则系统会出错。
冬天里的懒猫
2021/08/05
2.6K0
2018-08-23 Java工具类——全角半角字符相互转换
https://blog.csdn.net/xyw591238/article/details/51719747 https://my.oschina.net/zjcx/blog/679604 https://segmentfault.com/a/1190000010841143
Albert陈凯
2018/09/20
1.8K0
C#全角和半角转换
在计算机屏幕上,一个汉字要占两个英文字符的位置,人们把一个英文字符所占的位置称为"半角",相对地把一个汉字所占的位置称为"全角"。在汉字输入时,系统提供"半角"和"全角"两种不同的输入状态,但是对于英文字母、符号和数字这些通用字符就不同于汉字,在半角状态它们被作为英文字符处理;而在全角状态,它们又可作为中文字符处理。半角和全角切换方法:单击输入法工具条上的 按钮或按键盘上的Shift+Space键来切换。 (1)全角--指一个字符占用两个标准字符位置。 汉字字符和规定了全角的英文字符及国标GB2312-8
张善友
2018/01/19
2.5K0
java 全角转半角字符
/** * 全角空格为12288,半角空格为32 * 其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248 * * 将字符串中的全角字符转为半角 * @param src 要转换的包含全角的任意字符串 * @return 转换之后的字符串 */ public static String toSemiangle(String src) { char[] c = src.toCharArray(); for (int index = 0; in
前Thoughtworks-杨焱
2021/12/08
2K0
用Python转换一些常见全角字符为半
最近在爬日文小说的过程中,经常遇到全角(甚至和和半角混用),造成我(强迫症)强烈不适,就着手专门写一个脚本处理之
py3study
2020/01/02
7220
python3环境下的全角与半角转换代码和测试
全角和半角转换是文本预处理的常见工作之一,然而现在网上一搜python的相关代码,几乎都是python2版本的,因此根据人角和半角的转换规律,将其代码撰写如下:
sparkexpert
2019/05/26
3K0
python 匹配文本全角转半角字符「建议收藏」
因为编码通常为为utf8,若直接匹配,中文括号的3字节编码会和一些中文的字节编码重复,产生意想不到的结果
全栈程序员站长
2022/09/13
1.6K0
淘宝API返回的空格trim()不掉,好着急好生气
在处理文本数据时,经常会遇到不同类型的空格字符。除了最常见的半角空格(ASCII码为32)之外,还有全角空格(Unicode编码为\u3000)。这两种空格虽然在视觉上看起来相同,但在计算机内部表示却不一样,因此在进行字符串处理时需要注意区分。
烟雨平生
2024/11/23
3160
淘宝API返回的空格trim()不掉,好着急好生气
解决TextView排版混乱或者自动换行的问题
其实在TextView中遇到排版自动换行而导致混乱不堪的情况是非常常见的,而且导致这种问题产生的原因就是英文和中文混合输入,半角字符和全角字符混合在一起了。一般情况下,我们输入的数字、字母以及英文标点都是半角字符,所以占位无法确定,它们与汉字的占位不同,由于这个原因,导致很多文字的排版都是参差不齐的。 原因找到了,自然解决方法就来了,一般有以下两种方法来解决这种问题。 1、将TextView中的字符全角化。即将所有的数字、字母及标点全部转为全角字符,使它们与汉字同占两个字节,这样就可以避免由于占位导致的排版
非著名程序员
2018/02/09
4.8K0
Java工具集-类型转换工具
简单工具类 写作初衷:由于日常开发经常需要用到很多工具类,经常根据需求自己写也比较麻烦 网上好了一些工具类例如commom.lang3或者hutool或者Jodd这样的开源工具,但是 发现他们之中虽然设计不错,但是如果我想要使用,就必须要引入依赖并且去维护依赖,有些 甚至会有存在版本编译不通过问题,故此想要写作一个每个类都可以作为独立工具类使用 每个使用者只需要复制该类,到任何项目当中都可以使用,所以需要尊从以下两个原则才能 做到.在此诚邀各位大佬参与.可以把各自用过的工具,整合成只依赖JDK
cwl_java
2019/10/26
2.2K0
C#全角转换成半角并检查建议收藏
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/120782.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/15
8090
写代码时,手敲是工程延期的万恶之源,不信你看这个
从字符的角度看,“!”【65281】和“!”[33]是两个不同字符,那么在使用contains方法进行比较时,必然不匹配,然后返回false了。
烟雨平生
2025/03/17
660
写代码时,手敲是工程延期的万恶之源,不信你看这个
高效编程之首字符大小写转换!
Spring注入一个类的时候,BeanFactory 收到的一个类名, 类名都是首字母大写的,但是注入使用的确是首字母小写,这就引发了思考,spring是怎么把首字母大写转小写的呢?
用户2141593
2019/02/20
1.1K0
Java实用工具类四:StringUtils工具类
此文仅对自己工作中用到的类进行总结,方便以后的使用。 package com.cn.hnust.util; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.servlet.http.HttpServletRe
芈亓
2022/06/17
8270
JS实用技巧手记之八
除特别注明外,本站所有文章均为慕白博客原创,转载请注明出处来自https://geekmubai.com/programming/157.html
慕白
2018/08/03
5160
SpringBoot + xss 跨站脚本攻击实战
我百度搜索了一下,跨站脚本攻击,相关内容超过 500 多万,但是相比 NPE 来说,显然还不够。很多程序员不重视跨站脚本攻击,导致很多开源项目都存在这样的漏洞。
业余草
2020/05/07
1.5K0
Java 读取汉字拼音
​pom.xml导入pinyin4j的依赖 <dependency> <groupId>com.belerweb</groupId> <artifactId>pinyin4j</artifactId> <version>2.5.1</version> </dependency> 汉字转拼音工具类 package org.fh.util; import net.sourceforge.pinyin4j.PinyinHe
FHAdmin
2021/06/29
3.2K0
Java 编程问题:一、字符串、数字和数学
本章包括 39 个涉及字符串、数字和数学运算的问题。我们将从研究字符串的一系列经典问题开始,例如计算重复项、反转字符串和删除空格。然后,我们将研究专门用于数字和数学运算的问题,例如两个大数求和和和运算溢出,比较两个无符号数,以及计算除法和模的下限。每个问题都要经过几个解决方案,包括 Java8 的函数风格。此外,我们将讨论与 JDK9、10、11 和 12 有关的问题。
ApacheCN_飞龙
2022/07/11
1K0
java字符串练习题4、统计一行字符串中所有的字符类型数量
解析,写个循环,挨个判断字符类型后进行归类统计数量即可,但是我们的统计方式可以分为两种,可以直接ASCII码来判断,也可以通过【Character】包装类来直接判断类型,这里【Character】包装类给了很全的符号类型判断方法。我在文末留给大家了。
红目香薰
2023/01/13
5650
java字符串练习题4、统计一行字符串中所有的字符类型数量
Asp.Net 加密解密
#region DES加密解密 /// <summary> /// DES加密 /// </summary> /// <param name="strSource">待加密字串</param> /// <param name="key">32位Key值</param> /// <returns>加密后的字符串</returns> public string DESEncrypt(string strSource) { return DESEncrypt(strSource, DESKey); } public string DESEncrypt(string strSource, byte[] key) { SymmetricAlgorithm sa = Rijndael.Create(); sa.Key = key; sa.Mode = CipherMode.ECB; sa.Padding = PaddingMode.Zeros; MemoryStream ms = new MemoryStream(); CryptoStream cs = new CryptoStream(ms, sa.CreateEncryptor(), CryptoStreamMode.Write); byte[] byt = Encoding.Unicode.GetBytes(strSource); cs.Write(byt, 0, byt.Length); cs.FlushFinalBlock(); cs.Close(); return Convert.ToBase64String(ms.ToArray()); } /// <summary> /// DES解密 /// </summary> /// <param name="strSource">待解密的字串</param> /// <param name="key">32位Key值</param> /// <returns>解密后的字符串</returns> public string DESDecrypt(string strSource) { return DESDecrypt(strSource, DESKey); } public string DESDecrypt(string strSource, byte[] key) { SymmetricAlgorithm sa = Rijndael.Create(); sa.Key = key; sa.Mode = CipherMode.ECB; sa.Padding = PaddingMode.Zeros; ICryptoTransform ct = sa.CreateDecryptor(); byte[] byt = Convert.FromBase64String(strSource); MemoryStream ms = new MemoryStream(byt); CryptoStream cs = new CryptoStream(ms, ct, CryptoStreamMode.Read); StreamReader sr = new StreamReader(cs, Encoding.Unicode); return sr.ReadToEnd(); }
用户8671053
2021/11/02
2.4K0
相关推荐
java全角半角标点符号转换
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档