/**
* 以Byte数的方式来实现的LengthFilter
* @author bvin
*/
public class OneByteInputFilter implements InputFilter{ private final int mMax; public OneByteInputFilter(int mMax) {
super();
this.mMax = mMax;
} @Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart,
int dend) {
//int remainLength = dest.length()-(dend-dstart); CharSequence placeStart = dest.subSequence(0, dstart);
CharSequence placeEnd = dest.subSequence(dend, dest.length()); int placeStartLength = Util.computeLenthByByte(placeStart.toString());
int placeEndLength = Util.computeLenthByByte(placeEnd.toString()); int canReplaceSize = mMax-placeStartLength-placeEndLength; if (canReplaceSize>0) {
CharSequence sourceSpan = source.subSequence(start, end);
int sourceSpanLength = Util.computeLenthByByte(sourceSpan.toString());
if (sourceSpanLength>=canReplaceSize) {//替换内容长度大于可容纳长度
String result = fixSplit(sourceSpan.toString(), canReplaceSize, false);
if (!TextUtils.isEmpty(result)) {
return result;
}else {
return "";
} }else {
return null;
} }else {
return "";
} } private static String fixSplit(String s,int sum,boolean debug){
int counter = 0;
String fixString = null;
for (int i = 0; i < s.length(); i++) {
if (counter>=sum) {
break;
}
int length = (s.charAt(i)+"").getBytes().length;
if(length>1){
counter += 2;
if (counter<=sum) {
fixString = s.substring(0, i+1);
}
} else if (length==1){
if (counter<=sum) {
fixString = s.substring(0, i+1);
}
++counter;
}else {//小于1
continue;
} /*if (counter>=sum) {
System.out.println("break;"+counter);
break;
}else {
fixString = s.substring(0, i+1);
}*/
}
return fixString;
}
}

最新文章

  1. 解决Jenkins 2.0 初始化界面卡住的问题
  2. 漂浮QQ
  3. PHP学习笔记:利用gd库给图片打图片水印
  4. Linux按键驱动程序设计详解---从简单到不简单【转】
  5. Android 调试机制
  6. Java中3DES加密解密与其他语言(如C/C++)通信
  7. underscorejs-find学习
  8. python3 时间和日期
  9. hdu 4739【位运算】.cpp
  10. VBA 中窗体模式切换,一次设计2种表现
  11. 【Django】 初步学习
  12. Python之socketserver模块和验证客户端链接的合法性
  13. bzoj5252 [2018多省省队联测]林克卡特树
  14. NLP第八条
  15. 利用CSS3实现鼠标悬停在图片上图片缓慢缩放的两种方法
  16. docker常用操作备忘
  17. js的简单介绍
  18. CentOS查找目录或文件
  19. 《DSP using MATLAB》Problem 3.4
  20. 关于ListView中getView被重复调用的问题

热门文章

  1. android:AlertDialog控件
  2. nginx多站路由配置tomcat
  3. facebook&#39;s HipHop for PHP: Move Fast
  4. 了解 JavaScript (2)- 需要了解的一些概念
  5. SSE图像算法优化系列三:超高速导向滤波实现过程纪要(欢迎挑战)
  6. [C++] const与重载
  7. sqlite3命令行查看中文乱码问题解决
  8. hustoj升级
  9. 解锁scott账户方法
  10. Failed to configure a DataSource: &#39;url&#39; attribute is not specified and no embedded datasource could be configured.