IndexableListView详解之——StringMatcher

这是IndexableListView项目详解系列的第二篇博客,还没看第一篇博客的小伙伴们建议先看哦,链接: IndexableListView详解之——IndexableListViewActivity,简单介绍了整个项目的结构、讲解了IndexableListViewActivity。

这里来讲一讲IndexableListView项目中用到的字符匹配工具类StringMatcher,整个功能实现很简单,直接上代码哈。


StringMatcher

因为作者是韩国人,源码中有许多关于韩文的判断和方法,都被我删掉啦,这个match方法只面向英文字符哈。如果需要匹配中文,还需要做一系列处理,有兴趣的小伙伴自己研究哈。

public class StringMatcher {
	/**
	 * 匹配value和keyword
	 * @param value 列表项的内容
	 * @param keyword 索引列表中的字符
	 */
	public static boolean match(String value, String keyword) {
		if (value == null || keyword == null)
			return false;
		if (keyword.length() > value.length())
			return false;

		int i = 0,j = 0;
		/*
		 * 匹配方法1:
		 * 判断value中是否包含keyword,若包含则返回true,否则返回false
		 */
		do {
			if (value.charAt(i) == keyword.charAt(j)) {
				i++;
				j++;
			}else if(j > 0){
				break;
			}else{
				i++;
			}
		} while (i < value.length() && j < keyword.length());
		return (j == keyword.length());
		
		/*
		 * 匹配方法2:
		 * 判断value是否以keyword开头,若是则返回true,否则返回false
		 */
//		for(int i=0;i<keyword.length();i++){
//			if(value.charAt(i) != keyword.charAt(i)){
//				return false;
//			}
//		}
//		return true;
	}
}
讲解

1.首先match方法中有两个判断语句:1)若传入参数中只要有一个为null则返回false 2)若value的长度小于keyword的长度,则返回false

2.匹配方法1:这是项目中原来的代码,这样判断只需满足keyword包含在value中即返回true。但在IndexableListViewActivity中调用该方法传入的参数为item内容的第一个字符和索引字符,可以看出该功能的实现大于实际的需求,可能是为了以后方便扩展功能吧。

3.匹配方法2:这是我自己写的匹配方法,非常简单的逻辑,只是为了方便大家理解哈。


谢谢支持!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值