【android】半角符号与全角符号的转换_realizelizj的博客-程序员宅基地

技术标签: 全角  半角  android  textview  

一、应用场合


1.  android中用TextView显示文本信息的时候,经常会出现不对齐的现象,很不美观,

因此,考虑将全角的符号转换为半角符号,或者半角符号转换为全角符号,达到文本对齐的效果

2. 半角占一个字符,全角占两个字符


二、代码实现


// 功能:字符串半角转换为全角
// 说明:半角空格为32,全角空格为12288.
// 		 其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
// 输入参数:input -- 需要转换的字符串
// 输出参数:无:
// 返回值: 转换后的字符串
public static String halfToFull(String input)
{
	char[] c = input.toCharArray();
	for (int i = 0; i< c.length; i++)
	{
		if (c[i] == 32) //半角空格
		{
			c[i] = (char) 12288;
			continue;
		}
 
		//根据实际情况,过滤不需要转换的符号
		//if (c[i] == 46) //半角点号,不转换
		// continue;
 
		if (c[i]> 32 && c[i]< 127)	//其他符号都转换为全角
			c[i] = (char) (c[i] + 65248);
	}
	return new String(c);
}
 
 
// 功能:字符串全角转换为半角
// 说明:全角空格为12288,半角空格为32
// 		 其他字符全角(65281-65374)与半角(33-126)的对应关系是:均相差65248 
// 输入参数:input -- 需要转换的字符串
// 输出参数:无:
// 返回值: 转换后的字符串
public static String fullToHalf(String input) 
{  
	char[] c = input.toCharArray();  
	for (int i = 0; i< c.length; i++) 
	{  
	       if (c[i] == 12288) //全角空格
	       {  
	       		c[i] = (char) 32;  
	         	continue;  
	       }
 
	       if (c[i]> 65280&& c[i]< 65375)  
	          c[i] = (char) (c[i] - 65248);  
	}  
	return new String(c);  
}

三、 遗留问题


TextView当某一行的最后一个字符为标点符号的时候,会将标点符号的前一个字符和标点符号,写到另外一行,

这样也会很不美观,但是,目前网络上,暂时找不到解决办法,希望哪位高手提供下简单的解决办法。




版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u011471135/article/details/24133243

智能推荐

NSStringDrawingOptions_yinachong的博客-程序员宅基地

NSStringDrawingTruncatesLastVisibleLine:如果文本内容超出指定的矩形限制,文本将被截去并在最后一个字符后加上省略号。如果没有指定NSStringDrawingUsesLineFragmentOrigin选项,则该选项被忽略。NSStringDrawingUsesLineFragmentOrigin:绘制文本时使用 line fragement or

条件注解@ConditionalOnBean失效原因_zhm_sky的博客-程序员宅基地_conditionalonbean不生效

测试环境(配置类)@Import({User.class,Pet.class})@Configuration(proxyBeanMethods = true)public class MyConfig { @Bean @ConditionalOnBean(name = "cat") public User user(){ return new User("航书", 12); } @Bean("cat") public

一重指针、二重指针做函数参数的深刻分析(虽然很基础,但要深刻理解)_ShenHang_的博客-程序员宅基地

一重指针做函数参数#include&lt;iostream&gt;using namespace std;void change(int *p){ *p = 20; p++; cout &lt;&lt; p &lt;&lt; endl;}int main() { int a = 10; change(&amp;a); cout &lt;&lt; &amp;a &lt;&lt...

java设置图片点击渐变透明,图片实现渐变/透明效果_weixin_39569753的博客-程序员宅基地

众所周知,图片等一些盒子都可以利用opacity属性来设置不透明度,但是前两天我朋友忽然给我一个截图,截图效果如下图中红框圈住的位置图片或者说摄像头采集的画面出现了渐变到透明,可以清楚的看到可以看到后面小哥的胳膊,然后问我如何实现这种效果,这下把我难住了(呵 天天给我出难题),我开始在个大论坛开始寻找解决方案;忽然在前天,日常逛论坛时看到一个文字投影的效果,而后忽然灵机一动就想,能不能变相的实现前...

java笔记_笑容温暖城寨的博客-程序员宅基地

安卓课的Java扩展笔记包类命名规范总结输出换行与不换行mian方法中的args参数Math类快捷输出语句static关键字定义无参方法定义带返回值方法包package com.eoe.basic.day01;//包名 在java当中用.表示windos中的/,一般格式:com.公司名.项目名.业务模块名称例如:com.sina.crm.user类命名规范总结1、java中可以有多个类2、java中可以有多个类,但是最多只有一个类的类名和文件名相同3、如果一个类被public修饰,那该类

一、网络游戏架构的前世今生(2)_王元恺David的博客-程序员宅基地

网络游戏架构演进史,优化游戏网络,自定义网络协议

随便推点

oracle设置core文件大小,Linux的Core文件设置与调试_李daxin的博客-程序员宅基地

一、运行时错误任何人写程序都会出错,正如《C++编程规范》所说,真正可怕的错误不是编译时的错误,而是运行时错误。有的程序可以通过编译, 但在运行时会出现Segment fault(段错误)这通常都是指针错误(一般就是空指针)引起的,或者访问了不能访问的内存(数组越界,系统保护)二、core文件我们不可能用GDB一句一句的去找,真正的英雄都善于使用手中的武器。这就是core file所谓core,就...

redis客户端连接遇到的坑,记录一下_choujulong7459的博客-程序员宅基地

期间出现的错误如下:1.connect timeout2.connect refused3.遗失对主机的连接denied redis is running in protected mode。。。。。。总结处理这些报错的步骤:1.关闭centos防火墙2.修改redis.conf文...

[原创]FineUI秘密花园(六) — 表单控件_hong2511的博客-程序员宅基地

FineUI中有哪些常用的表单控件,它们有什么共同点和不同点,这一篇文章我们会详细解说。 表单控件的公共属性 所有的表单都具有如下属性: ShowLabel:是否显示标签(默认值:t

fineui mysql_FineUI 相关_卖家胖蝌蚪的博客-程序员宅基地

FineUI 开源版(原ExtAsp.Net)Last updated:2017-03SURFSKYhttp://pan.baidu.com/share/home?uk=170857326#category/type=0---------------------------------------------------配置&amp;预设http://fineui.com/demo/#/demo/...

手把手教你使用FineUI+动软代码生成器开发一个b/s结构的取送货管理信息系统(附源码)之开篇_编程鸭的博客-程序员宅基地

一 本系列随笔概览及产生的背景近阶段接到一些b/s类型的软件项目,但是团队成员之前大部分没有这方面的开发经验,于是自己选择了一套目前网上比较容易上手的开发框架(FineUI),计划录制一套视频讲座,来讲解如何利用FineUI快速开发一个小型的b/s结构的管理系统,已达到帮助团队成员快速掌握b/s结构信息系统的开发方法。源码位置:https://github.com/kamiba/FineU...