package com.example.zjh_android.utils;

/**

* <PRE>

* 提供对字符串的全角->半角,半角->全角转换

* </PRE>

*/

public class BCConvert {

/**

* 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表中除空格外的可见字符与对应的全角字符的相对偏移

*/

static final int CONVERT_STEP = 65248; // 全角半角转换间隔

/**

* 全角空格的值,它没有遵从与ASCII的相对偏移,必须单独处理

*/

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

/**

* 半角空格的值,在ASCII中为32(Decimal)

*/

static final char DBC_SPACE = ' '; // 半角空格

/**

* <PRE>

* 半角字符->全角字符转换

* 只处理空格,!到˜之间的字符,忽略其他

* </PRE>

*/

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));

} else { // 不对空格以及ascii表中其他可见字符之外的字符做任何处理

buf.append(ca[i]);

}

}

return buf.toString();

}

/**

* <PRE>

* 全角字符->半角字符转换

* 只处理全角的空格,全角!到全角~之间的字符,忽略其他

* </PRE>

*/

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) {

// System.out.println(StringUtils.trimToEmpty(" a,b ,c "));

String s = "nihaohk |   nihehe ,。 78  7 ";

s = BCConvert.qj2bj(s);

System.out.println(s);

System.out.println(BCConvert.bj2qj(s));

}

}

android TextView 异常换行问题相关推荐

  1. 判断Android Textview是否换行

    判断Android Textview是否换行 1.先设置ellipsize="end" 2.通过addOnGlobalLayoutListene方法判断是否触发ellipsize= ...

  2. android 怎么换行,android textview 怎么换行?

    GCT1015 textView如果想要强制换行的话,必须先把TextView显示方式修改为多行(android:singleLine="false"),然后才能换行.方法一般用两 ...

  3. android textview 关闭自动换行,Android TextView停止换行

    我花了很多时间寻找解决方案,但是没有发现任何与我所遇到的相似的东西.当我在G2上运行我的应用程序时,我的所有textview都不会换行.(不管视图有多大.)如果我在模拟器上运行,它们会自动换行.部署到 ...

  4. android textview 英文 换行,android textview 怎么换行?

    textView如果想要强制换行的话,必须先把TextView显示方式修改为多行(android:singleLine="false"),然后才能换行.方法一般用两种: 1.在字符 ...

  5. android 换行乱_浅谈Android textview文字对齐换行的问题

    今天忽然发现android项目中的文字排版参差不齐的情况非常严重,不得不想办法解决一下. 经过研究之后,终于找到了textview自动换行导致混乱的原因了----半角字符与全角字符混乱所致!一般情况下 ...

  6. Android TextView 常用技巧

    TextView在Android中实现文字说明等功能,基本的使用都很简单,那么除了基本展示文字的使用,我们还能够经常使用TextView实现如下的功能: 1.显示丰富的文本(URL.字体大小.颜色等) ...

  7. android字体行距,android textview设置字体的行距和字间距

    字间距 textView有一个属性android:textScaleX是调节字间距的,它的值是一个float型.查看源代码,默认textView 此属性是使用的是: android.internal. ...

  8. android textView调整字体的间距和行间距

    今天,就随便写的textView的内容. 字间距 textView有一个属性android:textScaleX是调节字间距的,它的值是一个float型.查看源代码,默认textView 此属性是使用 ...

  9. android如何设置透明字体颜色,android TextView文字透明度跟背景透明度设置

    当前位置: 我的异常网 » Android » android TextView文字透明度跟背景透明度设置 android TextView文字透明度跟背景透明度设置 www.myexceptions ...

  10. android+设置字体行高,android textview设置字体的行距和字间距

    android textview设置字体的行距和字间距 字间距 textView有一个属性android:textScaleX是调节字间距的,它的值是一个float型.查看源代码,默认textView ...

最新文章

  1. 计算机组装安全常识,计算机组装与维护宝典
  2. R语言max函数min函数计算各种数据对象最大值最小值实战
  3. 服务器同步什么文件类型,不同服务器同步文件类型
  4. 湖南省计算机二级程序题库,湖南省计算机二级单选题题库(直接打印)
  5. android 取色器_老板夸我PPT配色高级,以为我学过设计,其实我都是从Logo取色
  6. BZOJ 4422 Cow Confinement (线段树、DP、扫描线、差分)
  7. 直播实录 | AlphaGo Zero是如何实现无师自通的?
  8. 2022博客整理之感言
  9. xs资料网-产品设计图档下载_proe玩具车3D模型图档下载creo4.0汽车模型下载中磊教育...
  10. 爬虫5-BeautifulSoup模块简解2
  11. PC HARDWARE SHARE NO.4
  12. 【一天一个C++小知识】008.内联函数
  13. 获取百度地图、高德地图经纬度坐标
  14. VTP协议原理及配置
  15. 浏览器在线视频播放加速方法——直接修改网页代码实现加速
  16. 逸仙电商将携Galenic法国科兰黎、EVE LOM参展进博会 | 进博会倒计时
  17. wireshark、异常数据分析、常见RST介绍
  18. vue如何通过NodeJs本地获取微信access_token及签名,并调用微信接口
  19. 使用Anaconda写Python程序,强烈推荐Spyder
  20. Eclipse 提示代码时弹出错误弹框问题

热门文章

  1. 嵌入式系统开发-麦子学院(11)——ARM Cortex A8 硬件基础(1)
  2. Redisson分布式锁学习总结:RedissonMultiLock 如何同时锁住N个资源
  3. Android 图片资源大瘦身
  4. DC影视作品及观看顺序
  5. 《tkinter实用教程二》tkinter的子模块ttk
  6. 域控制器组策略:部署软件自动下发
  7. MonthCalendar上使ToolTip随鼠标位置实时变化
  8. 我的世界java版如何装mod_《我的世界》怎么装mod 安装方法教程
  9. 盘点好用的 Markdown 编辑器
  10. Linux ftrace 2.3、kprobe event的使用