java 全角字符半角字符转换

[java] view plaincopy

  1. /// <summary>
  2. /// 判断字符是否英文半角字符或标点
  3. /// </summary>
  4. /// <remarks>
  5. /// 32    空格
  6. /// 33-47    标点
  7. /// 48-57    0~9
  8. /// 58-64    标点
  9. /// 65-90    A~Z
  10. /// 91-96    标点
  11. /// 97-122    a~z
  12. /// 123-126  标点
  13. /// </remarks>
  14. public static bool IsBjChar(char c)
  15. {
  16. int i = (int)c;
  17. return i >= 32 && i <= 126;
  18. }
  19. /// <summary>
  20. /// 判断字符是否全角字符或标点
  21. /// </summary>
  22. /// <remarks>
  23. /// <para>全角字符 - 65248 = 半角字符</para>
  24. /// <para>全角空格例外</para>
  25. /// </remarks>
  26. public static bool IsQjChar(char c)
  27. {
  28. if (c == ‘\u3000‘) return true;
  29. int i = (int)c - 65248;
  30. if (i < 32) return false;
  31. return IsBjChar((char)i);
  32. }
  33. /// <summary>
  34. /// 将字符串中的全角字符转换为半角
  35. /// </summary>
  36. public static string ToBj(string s)
  37. {
  38. if (s == null || s.Trim() == string.Empty) return s;
  39. StringBuilder sb = new StringBuilder(s.Length);
  40. for (int i = 0; i < s.Length; i++)
  41. {
  42. if (s[i] == ‘\u3000‘)
  43. sb.Append(‘\u0020‘);
  44. else if (IsQjChar(s[i]))
  45. sb.Append((char)((int)s[i] - 65248));
  46. else
  47. sb.Append(s[i]);
  48. }
  49. return sb.ToString();
  50. }

全角空格为12288,半角空格为32

其他字符半角(33-126)与考试.大提示全角(65281-65374)的对应关系是:均相差65248

[java] view plaincopy

  1. /***************************************
  2. *
  3. * 全角转换成半角
  4. * @param input 原始字符串
  5. * @return 转换后的字符串
  6. *
  7. ***************************************/
  8. public static String QtoB(String input) {
  9. char c[] = input.toCharArray();
  10. for (int i = 0; i < c.length; i++) {
  11. if (c[i] == ‘\u3000‘) {
  12. c[i] = ‘ ‘;
  13. }?
  14. else if (c[i] > ‘\uFF00‘ && c[i] < ‘\uFF5F‘) {
  15. c[i] = (char) (c[i] - 65248);
  16. }
  17. }
  18. return new String(c);
  19. }

[java] view plaincopy

  1. //半角转全角
  2. public static String BtoQ(String input){
  3. char c[] = input.toCharArray();
  4. for ( int i=0; i<c.length;i++ ) {
  5. if (c[i] ==‘ ‘) {
  6. c[i] = ‘\u3000‘;
  7. }
  8. else if (c[i]<‘\177‘) {
  9. c[i]= (char) (c[i]+65248);
  10. }
  11. }
  12. return new String(c);
  13. }
时间: 2024-08-11 01:36:20

java 全角字符半角字符转换的相关文章

java 全角、半角字符串转换

转自:http://www.cnblogs.com/modou/articles/2679815.html     加入了空字符串的验证 半角转全角的方法: /** * @Title: ToSBC * @Description: 半角转全角 * @param input String. * @return 全角字符串. * @throws */ public static String ToSBC(String input) { if(!("".equals(input)||input

java全角、半角字符的关系以及转换

如果搞明白了Java中全角字符和半角字符之间的关系,那他们之间的转换就不是个麻烦事儿.你只需要对这个关系有那么一个印象就足够了. 全角字符与半角字符的关系 通过下面的代码能看到Java中所有字符以及对应编码的值\ public static void main(String[] args) { for (int i = Character.MIN_VALUE; i <= Character.MAX_VALUE; ++i) { System.out.println(i + " "

详解全角和半角的转换

最近在项目中遇到一个问题,客户上传的文件无法下载下来,经过定位发现原来客户上传的文件名中包含很多全角字符导致无法解析,找不到对应的文件,其实文件是真实存在的,只是用的上传下载组件不支持全角字符的文件名,从而导致文件找到不到,无法下载. 所以本人就对全角和半角进行了一些分析和总结以及它们之间用java代码是如何进行转换的经验同各位园友进行分享,希望大家共同学习,共同进步,不足之处,请大家不吝指出. 好了,进入正题......... 全角和半角简介 全角是一种电脑字符,且每个全角字符占用两个标准字符

java全角和半角转换

package test; public class HalfAndFullConverseUtil { /** * ASCII表中可见字符从!开始,偏移位值为33(Decimal) */ private static final char DBC_CHAR_START = 33; // 半角! /** * ASCII表中可见字符到~结束,偏移位值为126(Decimal) */ private static final char DBC_CHAR_END = 126; // 半角~ /** *

sql server 2005全角与半角字符转换

CREATE FUNCTION D_ByteExchangeS_Byte(@str NVARCHAR(4000), --要转换的字符串@flag bit              --转换标志,0转换成半角,1转换成全角)RETURNS nvarchar(4000)ASBEGIN    DECLARE @pat nvarchar(8),@step int,@i int,@spc int    IF @flag=0        SELECT @pat=N'%[!--]%',@step=-6524

java全角转半角

// 转半角的函数(DBC case) // 任意字符串 // 半角字符串 // 全角空格为12288,半角空格为32 // 其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248 public String ToDBC(String input) { char[] c = input.toCharArray(); for (int i = 0; i < c.length; i++) { if (c[i] == 12288) { c[i] = (char) 3

刨根究底字符编码之五——简体汉字编码方案(GB2312、GBK、GB18030、GB13000)以及全角、半角、CJK

简体汉字编码方案(GB2312.GBK.GB18030.GB13000)以及全角.半角.CJK 一.概述 1. 英文字母再加一些其他标点字符之类的也不会超过256个,用一个字节来表示一个字符就足够了(2^8 = 256).但其他一些文字不止这么多字符,比如中文中的汉字就多达10多万个,一个字节只能表示256个字符,肯定是不够的,因此只能使用多个字节来表示一个字符. 于是当计算机被引入到中国后,相关部门设计了GB系列编码("GB"为"国标"的汉语拼音首字母缩写,即&q

C#全角和半角转换

在计算机屏幕上,一个汉字要占两个英文字符的位置,人们把一个英文字符所占的位置称为"半角",相对地把一个汉字所占的位置称为"全角".在汉字输入时,系统提供"半角"和"全角"两种不同的输入状态,但是对于英文字母.符号和数字这些通用字符就不同于汉字,在半角状态它们被作为英文字符处理:而在全角状态,它们又可作为中文字符处理.半角和全角切换方法:单击输入法工具条上的 按钮或按键盘上的Shift+Space键来切换. (1)全角--指一个

SQL转换全角和半角函数

SQL转换全角和半角函数 CREATE FUNCTION f_Convert( @str NVARCHAR(4000), --要转换的字符串 @flag bit --转换标志,0转换成半角,1转换成全角 )RETURNS nvarchar(4000) AS BEGIN DECLARE @pat nvarchar(8),@step int,@i int,@spc int IF @flag=0 SELECT @pat=N'%[!--]%',@step=-65248, @str=REPLACE(@st

字符串 批量全角、半角转换

全角转为半角 ADDRESS=KTRANSLATE(ADDRESS,'1234567890()','1234567890()'); ADDRESS=KTRANSLATE(ADDRESS,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','ABCDEFGHIJKLMNOPQRSTUVWXYZ'); 另一种方法:TRANWRD(ADDRESS,'?','?');