五十六、基础框架(十四)创建 地址簿-4

本文介绍如何在大型地址簿中实现一个搜索措施,通过参数化搜索指定联系人的姓名,使用 caseInsensitiveCompare: 方法进行大小写不敏感的比较,确保查找效率和准确性。演示了一个实际的程序实例,验证了搜索功能的有效性,包括部分匹配和多个结果的查找限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当你  拥有  一本庞大的地址簿时,你  就不大愿意  每次要查找  某人时  都将  全部的内容  都列举出来。于是  一个比较自然的做法  就是  编写  一项措施  来查找  某个联系人的信息。我们  可以把  这项措施  称为  search:,把  我们需要查找的联系人的姓名  作为  参数。先  把  这行语句

添加  到AddressBook这类物件的接口文件AddressBook.h当中。然后  在实施文件AddressBook.m当中  具体地  描述  search:这项措施  是如何  实施的:

在search:这项措施当中  参数,也就是  需要搜索的姓名,会存储  在本地变量nameToSearch当中。search:这项措施中的快速枚举  会  依次  读取  book这个数组物件中的各个物件。每次读取出来的物件  都会存储  在currentCard当中。每次读取完  一个物件,都会执行  循环体:

在循环体中的if()里面,

这行语句  对  包含在currentCard这个物件中的物件name  采取了  caseInsensitiveCompare:这项措施  并且  参数  为  nameToSearch这个物件。currentCard这个物件中的物件name  为  当前地址卡片中的姓名,而  nameToSearch这个物件  为  需要搜索的姓名。于是  caseInsensitiveCompare:这项措施  会比较  当前地址卡片中的姓名  和  需要搜索的姓名  并且  忽略  大小写。如果  caseInsensitiveCompare:这项措施  产生出  NSOrderedSame这个结果,则  表明  当前卡片中的姓名  和  需要搜索的姓名  在忽略 大小写的情况下  一致。

如果  caseInsensitiveCompare:这项措施产生的结果  为  NSOrderedSame,就会执行

这行语句,将  当前的地址卡片  作为结果  传递回去。

如果  快速枚举  执行结束后,还是  没有找到  和需要搜索的姓名一致的地址卡片,则会执行

这行语句,将  空值  作为结果  传递回去。

接下来  我们  在程序中  测试一下  search:这项措施  是否能  正常  工作:

运行  过后,得到  这样的结果:

在这个程序当中  我  分别  搜索了  jamie baker  和  Baker两个名字,其中  第一个  找到了,并且  显示了出来,而  第二个  没有找到。

search:这项措施  还比较原始,因为  它  只能找到  准确匹配,而  不能找到  部分匹配,而且  也无法找到  多个结果。

如果  需要  search:这项措施  能找到  部分匹配的结果,那么  则  需要用到  rangeOfString:这项措施。因为  rangeOfString这项措施  如果  在其实施对象当中  找到了  参数的内容,产生的结果  就是  参数  在其实施对象中的位置;如果  没有找到,那么  产生出来的结果  就是  nil。利用  这个原理,我们  可以使  search:这项措施  找到  可以部分匹配的地址卡片。

如果   需要  search:这项措施  能找到  多个匹配的结果,则  需要  创建  一个可修改的数组物件。每找到  一个匹配的地址卡片,就将  这张卡片  添加  到数组物件当中。最后  将 包含匹配结果的数组物件  作为结果  传递回去。


资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在 IT 领域,文档格式转换是常见需求,尤其在处理多种文件类型时。本文将聚焦于利用 Java 技术栈,尤其是 Apache POI 和 iTextPDF 库,实现 doc、xls(涵盖 Excel 2003 及 Excel 2007+)以及 txt、图片等格式文件向 PDF 的转换,并实现在线浏览功能。 先从 Apache POI 说起,它是一个强大的 Java 库,专注于处理 Microsoft Office 格式文件,比如 doc 和 xls。Apache POI 提供了 HSSF 和 XSSF 两个 API,其中 HSSF 用于读写老版本的 BIFF8 格式(Excel 97-2003),XSSF 则针对新的 XML 格式(Excel 2007+)。这两个 API 均具备读取和写入工作表、单元格、公式、样式等功能。读取 Excel 文件时,可通过创建 HSSFWorkbook 或 XSSFWorkbook 对象来打开相应格式的文件,进而遍历工作簿中的每个 Sheet,获取行和列数据。写入 Excel 文件时,创建新的 Workbook 对象,添加 Sheet、Row 和 Cell,即可构建新 Excel 文件。 再看 iTextPDF,它是一个用于生成和修改 PDF 文档的 Java 库,拥有丰富的 API。创建 PDF 文档时,借助 Document 对象,可定义页面尺寸、边距等属性来定制 PDF 外观。添加内容方面,可使用 Paragraph、List、Table 等元素将文本、列表和表格加入 PDF,图片可通过 Image 类加载插入。iTextPDF 支持多种字体和样式,可设置文本颜色、大小、样式等。此外,iTextPDF 的 TextRenderer 类能将 HTML、
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值