TextUtils 工具类

TextUtils类
首先看一下构造方法,发现其构造方法是私有的,不能进行new来创建。一般的工具类,都是提供一些单一的方法,一般方法都使用static进行修饰,所以new来创建是没有意义的。这也是一般的工具类的写法。

getChars(CharSequence s, int start, int end, char[] dest, int destoff){}

indexOf(CharSequence s, char ch)
indexOf(CharSequence s, char ch, int start)
indexOf(CharSequence s, char ch, int start, int end)
lastIndexOf(CharSequence s, char ch)
lastIndexOf(CharSequence s, char ch, int last)
lastIndexOf(CharSequence s, char ch, int start, int last)
indexOf(CharSequence s, CharSequence needle)
indexOf(CharSequence s, CharSequence needle, int start)
indexOf(CharSequence s, CharSequence needle, int start, int end)

// 将字符串one与two的指定区域匹配则返回true,否则返回false
// 内部实现将两个字符串中需要比较的部分合并为一个char[]后进行前后比较
// one:匹配字符串
// two:指定字符串
// toffset/ooffset:字符串的偏移量
// len:匹配的长度
regionMatches(CharSequence one, int toffset, CharSequence two, int ooffset, int len)

// 截取原字符串中的一部分返回
// 内部实现如果是String、StringBuffer、StringBuilder则分别调用他们的substring()方法,
// 否则将原字符串内的需要截取的部分放入一个char[]中,然后转化为String
// source:原字符串
// start:起始偏移量
// end:结束偏移量
String substring(CharSequence source, int start, int end)

// 在一个数组中的元素之间添加一个delimiter,最后返回一个String
// 此算法非常巧妙的解决了输入问题顾前不顾后的问题,希望看源码理解
// delimiter:需要插入的内容
// tokens:原数组、集合游标
String join(CharSequence delimiter, Object[] tokens)
String join(CharSequence delimiter, Iterable tokens)

// 将字符串以另一个字符串为匹配分拆成字符串数组
// text:原字符串
// expression:匹配的字符串、正则
String[] split(String text, String expression)
String[] split(String text, Pattern pattern)

// 获取String或者SpannedString
CharSequence stringOrSpannedString(CharSequence source)

// 判断空
// 为空返回true
// str == null || str.length() == 0
boolean isEmpty(@Nullable CharSequence str)

// 获取字符串除去首位空格的长度
// 内部实现分别从前和从后获取空格的长度,然后总长度减去空格的长度
int getTrimmedLength(CharSequence s)

// 两个字符串进行对比
// 内部实现如果两种==则直接返回,然后判断是否为空并且长度是否相等,
// 然后判断如果是String类型的则调用String.equals(),否则分别charAt()进行比较
boolean equals(CharSequence a, CharSequence b)

// 这是一个Deprecated标注的类
// 将字CharSequence中的某一部分进行反转
CharSequence getReverse(CharSequence source, int start, int end)

// 替换功能,template出现的sources替换为destinations,注意:只会替换第一个出现的。
CharSequence replace(CharSequence template, String[] sources, CharSequence[] destinations)

//替换template当中的^1`` ^2 等为values中相应的值,注意:不能超过9个,9个以上会抛出异常。
CharSequence expandTemplate(CharSequence template, CharSequence… values)
// 例子:
String template = “This is a ^1 of the ^2 broadcast ^3.”;
CharSequence expandTemplate = TextUtils.expandTemplate(template, “test”, “emergency”, “system”);

// 将CharSequence写入Parcel
writeToParcel(CharSequence cs, Parcel p, int parcelableFlags)

// 打印cs中的Span,prefix会在打印每个Span开始出现。printer,可以用LogPrinter,这样就可以打印在 log 里。
dumpSpans(CharSequence cs, Printer printer, String prefix)

getOffsetBefore()/getOffsetAfter()

// 获取文本之前或之后的偏移量
int getOffsetBefore(CharSequence text, int offset)
int getOffsetAfter(CharSequence text, int offset)
copySpansFrom()

// 从source中start到end 中的span复制到dest中,destoff是偏移量。
copySpansFrom(Spanned source, int start, int end, Class kind, Spannable dest, int destoff)
ellipsize()

// 相当于 TextView 的 xml 中ellipsize,这里可以回调省略范围的 index,
// 同时也可用通过preserveLength,设置返回的 CharSequence 的长度为原始长度还是省略后的长度,
// 这里利用的”零宽不换行空格符”来占位,where参数可以用
// TextUtils.TruncateAt.START,TextUtils.TruncateAt.END,TextUtils.TruncateAt.MIDDLE和TextUtils.TruncateAt.MARQUEE,
// 分别是开始,结尾,中间和跑马灯。
CharSequence ellipsize(CharSequence text, TextPaint p, float avail, TruncateAt where)
CharSequence ellipsize(CharSequence text, TextPaint paint, float avail, TruncateAt where, boolean preserveLength, EllipsizeCallback callback)
CharSequence ellipsize(CharSequence text, TextPaint paint, float avail, TruncateAt where, boolean preserveLength, EllipsizeCallback callback, TextDirectionHeuristic textDir, String ellipsis)
htmlEncode()

// encode html
String htmlEncode(String s)
concat()

// text 为可变参数,可以将传入的CharSequence组成一个CharSequence,并保留原有的Span。
CharSequence concat(CharSequence… text)
isGraphic()

// 判断是否有可以显示出来的字符
boolean isGraphic(CharSequence str)
isDigitsOnly()

// 判断是否仅有数字
boolean isDigitsOnly(CharSequence str)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值