如何获取联系人所有字段
如何提取数据中的信息2—从姓名+电话中提取想要的值
如何提取数据中的信息2—从姓名+电话中提取想要的值
从姓名+电话中提取想要的值
例如:从姓名和电话混合的内容,要提取出位于最左侧的姓名
方法:LEFT+ LEN 函数组合
1、LEN函数计算出A1单元格的字符数,将每个字符计算为1。
2、LENB函数计算出A1单元格的字节数,将字符串中的双字节字符(如中文汉字)计算为2,单字节字符(如数字、半角字母)计算为1。
3、用LENB计算结果减去LEN计算结果,就是字符串中的双字节字符个数。
4、最后用LEFT函数从A1单元格左侧,按指定位数取值。
举例:
提取姓名:
提取手机号:。
话单解析与数据提取功能分析
话单解析与数据提取功能分析一、引言话单(Call Detail Record, CDR)是电信运营商记录用户通信活动的重要数据。
通过对话单数据的解析和提取,可以深入了解用户通话、短信和网络活动的详情,为运营商提供精细化的服务和优化网络资源使用提供依据。
本文将重点探讨话单解析与数据提取功能的分析,包括功能需求、实现方法和应用领域等方面。
二、功能需求分析1. 话单解析:对原始话单数据进行解析,提取出关键字段的值,如呼叫时间、通话时长、呼叫类型等。
可以采用正则表达式、树状结构或自然语言处理等技术来实现。
2. 数据提取:根据用户的需求,从解析后的话单数据中提取出特定的信息,如某个手机号码的通话记录、某个地区的短信数据等。
可以通过数据库查询、数据过滤、索引等方式来实现。
3. 统计与分析:对提取出的数据进行统计和分析,生成报表或图表,以便运营商能够快速了解用户的通信习惯和网络使用情况,帮助决策和优化网络资源配置。
4. 用户画像:通过对话单数据的解析和提取,结合其他用户信息,如地理位置、套餐类型、使用设备等,生成用户画像,为运营商提供个性化服务和精准营销提供依据。
三、实现方法分析1. 开源工具:存在一些开源的话单解析与数据提取工具,如CDRTool、TelcoTool等。
这些工具通常提供了丰富的功能,并且具备一定的可定制性,可以根据实际需要进行二次开发和定制。
2. 自研系统:根据运营商自身需求和技术实力,可以自行开发话单解析与数据提取系统。
可以选择使用编程语言,如Python、Java等,结合相关的解析算法和数据处理技术进行开发。
3. 第三方工具:也可以选择采用第三方提供的话单解析与数据提取工具,如商业软件或云服务。
这些工具通常有成熟的解析和提取模块,并且提供了灵活的接口和操作方式。
四、应用领域分析1. 运营商业务优化:话单解析与数据提取功能可以帮助运营商深入了解用户通信习惯和网络使用情况,提供个性化的服务和优化网络资源配置,提高用户满意度和运营效率。
批量提取指定内容的步骤
批量提取指定内容的步骤
要批量提取指定内容,可以按照以下步骤进行操作:
1. 收集待处理的文档或数据集:收集包含要提取内容的文档或数据集,并保存在一个文件夹或数据库中。
2. 确定要提取的内容:确定要提取的具体内容,例如日期、姓名、地址等。
这个步骤非常重要,因为它会影响后续的提取过程。
3. 选择合适的工具或技术:根据要提取的内容类型,选择适合的工具或技术进行批量提取。
例如,如果要提取的是文本中的关键词,可以使用自然语言处理技术;如果要提取的是结构化数据,可以使用数据挖掘工具。
4. 编写代码或使用现有工具:根据选择的工具或技术,编写代码或使用现有的提取工具进行批量提取。
如果没有编程经验,可以考虑寻找现有的软件或工具来完成任务。
5. 测试和验证:对提取结果进行测试和验证,确保提取的内容准确无误。
可以随机选择几个样本进行人工验证,以确保提取的准确性和完整性。
6. 批量提取并保存结果:将编写的代码应用于整个文档或数据集,并批量提取需要的内容。
将提取的结果保存在适当的格式中,例如CSV文件或数据库。
7. 数据清洗和整理:根据需要,对提取的结果进行数据清洗和整理,例如删除重复项、规范化格式等。
8. 分析和应用结果:根据实际需要,对提取的结果进行进一步的分析和应用。
可以使用各种统计、机器学习或数据可视化技术进行分析,从中提取有用的信息。
以上是一般的批量提取指定内容的步骤,具体的实施过程可能会因不同的情况而有所变化。
Android获取手机联系人列表的方法
Android获取⼿机联系⼈列表的⽅法本⽂实例为⼤家分享了Android获取⼿机联系⼈列表的具体代码,供⼤家参考,具体内容如下下⾯直接贴代码1.先写⼀个实体类,来放名字和号码public class PhoneDto {private String name; //联系⼈姓名private String telPhone; //电话号码public String getName() {return name;}public void setName(String name) { = name;}public String getTelPhone() {return telPhone;}public void setTelPhone(String telPhone) {this.telPhone = telPhone;}}public PhoneDto(String name, String telPhone) { = name;this.telPhone = telPhone;}}2.写我们获取联系⼈的⼯具类public class PhoneUtil {// 号码public final static String NUM = monDataKinds.Phone.NUMBER;// 联系⼈姓名public final static String NAME = monDataKinds.Phone.DISPLAY_NAME;//上下⽂对象private Context context;//联系⼈提供者的uriprivate Uri phoneUri = monDataKinds.Phone.CONTENT_URI;public PhoneUtil(Context context){this.context = context;}//获取所有联系⼈public List<PhoneDto> getPhone(){List<PhoneDto> phoneDtos = new ArrayList<>();ContentResolver cr = context.getContentResolver();Cursor cursor = cr.query(phoneUri,new String[]{NUM,NAME},null,null,null);while (cursor.moveToNext()){PhoneDto phoneDto = new PhoneDto(cursor.getString(cursor.getColumnIndex(NAME)),cursor.getString(cursor.getColumnIndex(NUM))); phoneDtos.add(phoneDto);}return phoneDtos;}}3.接下来贴主页⾯布局<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="/apk/res/android"xmlns:tools="/tools"xmlns:app="/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"tools:context="com.test.content.MainActivity"><ListViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:id="@+id/lv_main_list"></ListView></LinearLayout>4.该贴主Activity代码了public class MainActivity extends AppCompatActivity {private List<PhoneDto> phoneDtos;private ListView lv_main_list;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.activity_main);check();}/*** 检查权限//判断是否有权限if(ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_CONTACTS)!= PackageManager.PERMISSION_GRANTED){ActivityCompat.requestPermissions(MainActivity.this,new String[]{Manifest.permission.READ_CONTACTS},201);}else{initViews();}}@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {super.onRequestPermissionsResult(requestCode, permissions, grantResults);if(requestCode==201){initViews();}else{return;}}private void initViews() {PhoneUtil phoneUtil = new PhoneUtil(this);phoneDtos = phoneUtil.getPhone();lv_main_list = (ListView) findViewById(R.id.lv_main_list);MyAdapter myAdapter = new MyAdapter();lv_main_list.setAdapter(myAdapter);//给listview增加点击事件/*lv_main_list.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position, long id) {//拨打电话Intent intent = new Intent();intent.setAction("android.intent.action.CALL");intent.addCategory(Intent.CATEGORY_DEFAULT);intent.setData(Uri.parse("tel:"+phoneDtos.get(position).getTelPhone()));startActivity(intent);}});*/}//⾃定义适配器private class MyAdapter extends BaseAdapter {@Overridepublic int getCount() {return phoneDtos.size();}@Overridepublic Object getItem(int position) {return phoneDtos.get(position);}@Overridepublic long getItemId(int position) {return position;}@SuppressLint("NewApi")@Overridepublic View getView(int position, View convertView, ViewGroup parent) {PhoneDto phoneDto = phoneDtos.get(position);LinearLayout linearLayout = new LinearLayout(MainActivity.this);youtParams layoutParams = new youtParams(0,youtParams.WRAP_CONTENT); layoutParams.weight = 1;TextView tv_name = new TextView(MainActivity.this);tv_name.setId(View.generateViewId());tv_name.setLayoutParams(layoutParams);tv_name.setText(phoneDto.getName());TextView tv_num = new TextView(MainActivity.this);tv_num.setId(View.generateViewId());tv_num.setLayoutParams(layoutParams);tv_num.setText(phoneDto.getTelPhone());linearLayout.addView(tv_name);linearLayout.addView(tv_num);return linearLayout;}}5.好了这样的话就已经完成了。
用在线表单收集联系人信息
用在线表单收集“联系人”信息,搭建CRM系统
"联系人"功能是金数据3.0版本推出的新功能。
您可以通过联系人模块对您所有表单收集到的所有联系人按分组进行管理。
此外,您同时可以分组管理联系人批量为联系人发送短信。
目前联系人功能不支持联系人的删除动作,即使您删除相对应的表单或者删除表单内的联系人数据,联系人栏的联系人也删除不了。
联系人查看
点击人后,进入到联系人管理页面,您可以看到您帐户中含有的全部联系人。
您也可以按表单以及组查看。
联系人分组
1您可以根据需求,对联系人进行分组管理。
点击“创建分组”,输入组的名
称。
2勾选需要移动到组的联系人,点击“添加到”后,选择组。
给联系人批量发短信
主动短信即批量发送短信。
您可以在联系人模块实现批量发送短信,比如,您可以在活动前或者活动结束后为参加活动的用户提前通知及短信致谢。
设置步骤
1点击联系人,即可进入联系人模块。
2筛选出您需要的表单/组联系人。
3筛选后,你就勾选可以选择要批量发送短信的联系人,完成后点击“发短信”。
需要注意的是:如果您所选择的联系人中含有格式不正确的号码(比如:
12345678900),在批量发送的时候会导致所有短信发送失败。
4在发送短信弹出框输入相关的短信签名以及内容。
5提交后短信就会开始审核,审核完成后就会直接发送短信。
注意!请不要使用短信推送功能发送反动、暴力、营销类等与国家相关法律政策冲突的内容。
具体请参考短信使用规范。
违者将会被禁用短信功能,甚至封停账户。
使用“即时搜索”查找联系人
缩小搜索范围
搜索全部或部分信息时获得的结果太多?考虑进一步 优化搜索。当您单击“搜索人员”框(位于“联系人” 选项卡上)时,将显示“搜索工具”选项卡。 这里有许多选项可帮助缩小搜索范围,包括“搜索工 具”选项卡上的以下选项组:
另请参阅
• • • • • 查找人员和联系人 添加联系人 使用即时搜索查找邮件和文本 更多培训课程 Office 兼容包
按 F5 开始,按 Esc 停止
2/2 视频
1
3:01
2
4:48
3
4
5
查找联系人
缩小结果的范围
摘要
反馈
帮助
帮助 课程摘要 - 使用“即时搜索”查找联系人
课程摘要
查找人员和联系人
1. 2.
3.
4.
单击屏幕底部的“联系人”。 在联系人列表上方,单击“搜索联系人”框。注 意:您可能尝试使用过“搜索人员”框,它位于 “开始”选项卡的右上角。该框有用,但前提是 您键入联系人的姓名(或其姓名的一部分)。您 无法使用此框搜索电话号码或地址等内容。 开始键入人员的姓名或要搜索的其他信息,例如 电话号码或公司名称。 提示:您可以搜索全部或部分信息。例如,如果 搜索名为“任月英”的人员,您可以键入全名或 者只键入“英”。 单击搜索结果中您想要的人员。
按 F5 开始,按 Esc 停止
1/2 视频
1
3:01
2
4:48
3
4
5
查找联系人
缩小结果的范围
摘要
反馈
帮助
使用“即时搜索”查找联系人
隐藏字幕
课程 摘要
帮助
因此,如果您需要搜索您的联系人,可通过在“即时搜索”中键入关键字开始。 可选择一个范围开始。默认情况下, 要打开此选项卡,请单击搜索框。键入一个搜索词。 但如果您需要更多帮助,可使用“搜索”选项卡上的选项。 在第一个视频中,使用“即时搜索”查找联系人,我们在“即时搜索”框中输入搜索条件。 但如果无法在需要时查找到某个联系人,则全部保存它们也没有任何意义。 您可能在多个位置存储了数千个联系人。 如果您还想搜索电子邮件和“日历”项,可将范围更改为“所有 但您可将搜索扩展到“子文件夹”,然后扩展到“所有联系人项目”。 假设您正在查找 我们如何知道哪一个包含我们所需的信息?一个查明方式是优化这里的搜索。 为何此名称出现多次?嗯,因为在多个地方找到了它。 但让我们回到“所有联系人项目”。 让我们单击 您也可检查您是否有联系人的电话号码,按类别搜索,或单击“其他”获取更多选项。 将显示我们要查找的联系人。 单击“有地址”和“有住宅地址”,将搜索优化为包含住宅地址的联系人。 现在如果我们在搜索框中键入“ca”, 假设我们不知道一个人的姓名,但我们知道他在哪里工作。 但如果我们单击“其他”,则可使用这些选项将搜索限制为联系人中的特定字段,因此我们将 还得到了任何名字中包含“ca”的联系人。 这样我们不仅得到了加利福利亚的联系人, 然后选择一个字段 但有一个选项您会发现很有用 搜索工具包含您可能不会经常使用的选项。 您在这里还有更多选项。如果想重复最近执行的搜索,可查看“最近执行的搜索”。 这将缩小结果范围。从这一点上看,我们可以添加更多条件,或猜测一下。 要进一步优化搜索,我们可以添加更多条件。假设我们还知道此人工作的部门。 对于“条件”,选择“包含”,对于“值”类型,键入 单击“字段”和“所有‘联系人’字段”,假设我们知道此人的职业。 如果结果太多,可添加更多条件。 底部列表将显示“配偶”字段不为空的所有联系人。 单击“添加到列表”和“立即查找”。 对于“条件”,假设我们知道此联系人有配偶,但不记得名字。我们可以选择“非空”。 此处下面的框允许您输入此字段的条件和值。 单击“字段”和“所有‘联系人’字段”。在此您可以搜索任何联系人字段。让我们单击“配偶”。 但“高级”选项卡是用于查找联系人的最有用区域。让我们尝试一下。 您可以在“联系人”和“其他选择”选项卡上设置条件, 其职业列出为 现在使用两个条件,我们找出有配偶的联系人, 有关在 最后,“高级查找”中还有“高级”选项卡。 但如果这样得不到您需要的结果,可选择“搜索”选项卡上的其他选项。 Outlook X 开始新搜索,并尝试部分搜索。 marketing Spencer 中搜索的更多信息,请查看课程摘要中的链接。 – “省/ 。 的住宅地址。 市/自治区”,并键入 – “高级查找”。 Outlook Outlook 搜索“当前文件夹”。 将搜索所有联系人信息。 “ca”。现在列表仅显示“省 “marketing”。单击“添加到列表”和“立 Outlook 项目”。 /市/自治区”字段中包 “ca” 删除。 含“ca”的联系人。 即查找”。
若依框架获取所有人员信息的方法
若依框架获取所有人员信息的方法
若依框架是一款基于.NET Core开发的快速开发框架,提供了丰富的功能和组件来简化开发流程,包括人员信息的管理和获取。
要获取所有人员信息,可以通过以下几种方法:
1. 使用若依框架提供的人员管理模块,若依框架内置了用户管理模块,可以通过调用相应的API接口或者服务方法来获取所有人员信息。
可以通过查询用户表或者调用相应的接口来获取所有用户的信息,包括姓名、部门、角色等信息。
2. 数据库查询,若依框架通常会使用数据库来存储人员信息,可以直接通过数据库查询语句来获取所有人员的信息。
可以编写SQL查询语句,或者使用ORM框架如Entity Framework来进行数据库查询操作,从而获取所有人员的信息。
3. 使用若依框架提供的扩展方法,若依框架提供了丰富的扩展方法和工具类,可以通过这些扩展方法来快速获取所有人员信息。
可以查阅若依框架的文档或者API手册,找到相应的扩展方法来实现获取所有人员信息的功能。
无论采用哪种方法,都需要确保在获取人员信息时考虑到安全性和权限控制,以及数据量过大时的性能优化。
另外,还需要注意数据的实时性,如果需要实时的人员信息,需要及时更新数据或者采用实时查询的方式来获取信息。
希望以上信息能够帮助到你。
pandas 字段提取
pandas 字段提取Pandas字段提取:简化数据处理的利器在数据分析和机器学习领域,数据的预处理是非常重要的一步,而其中一个关键的环节就是字段提取。
Pandas是Python中一个强大且灵活的数据分析工具,它提供了丰富的函数和方法来帮助我们进行数据的处理和分析。
本文将介绍Pandas中的字段提取功能,并探讨其在实际应用中的作用。
一、什么是字段提取?在数据处理过程中,我们通常会遇到需要从原始数据中提取特定字段的情况。
例如,我们可能有一份包含了客户信息的数据表,其中包含了姓名、年龄、性别、电话号码等字段。
如果我们只需要提取其中的姓名和电话号码,那么字段提取就是将这些字段从数据表中抽取出来的过程。
二、Pandas中的字段提取方法Pandas提供了多种方法来进行字段提取,下面我们将介绍其中的几种常用方法。
1. loc方法loc方法是Pandas中用于通过标签提取数据的方法。
它可以通过指定行标签和列标签来提取数据。
例如,我们可以使用以下代码从数据表中提取姓名和电话号码字段:```pythondf.loc[:, ['姓名', '电话号码']]```上述代码中的`df`是一个Pandas的DataFrame对象,`['姓名', '电话号码']`是要提取的列标签。
2. iloc方法iloc方法是Pandas中用于通过位置提取数据的方法。
它可以通过指定行索引和列索引来提取数据。
例如,我们可以使用以下代码从数据表中提取第一列和第三列的数据:```pythondf.iloc[:, [0, 2]]```上述代码中的`[0, 2]`是要提取的列索引。
3. filter方法filter方法是Pandas中用于按条件筛选数据的方法。
它可以根据列名的匹配条件来提取数据。
例如,我们可以使用以下代码从数据表中提取所有以"姓名"开头的列:```pythondf.filter(like='姓名')```上述代码中的`like='姓名'`表示筛选所有列名中包含"姓名"的列。
移动应用开发中的手机通讯录操作方法
移动应用开发中的手机通讯录操作方法手机通讯录作为一款非常常用的应用程序,已经成为我们日常生活中的必备工具。
对于移动应用开发者来说,了解和掌握手机通讯录的操作方法是十分重要的。
本文将介绍一些常见的手机通讯录操作方法,帮助开发者能够更好地利用通讯录功能。
一、查找联系人在移动应用开发中,查找联系人是通讯录功能中最常见的操作之一。
通过在手机通讯录中查找联系人,用户可以快速找到并获取联系人的信息。
在Android平台上,开发者可以利用ContentResolver类和ContactsContract类来实现查找联系人的功能。
首先,需要获取ContentResolver对象:```ContentResolver contentResolver = getContentResolver();```然后,可以使用query()方法来查询联系人:```Cursor cursor =contentResolver.query(monDataKinds.Phone.CONTENT_URI, null, null, null, null);```最后,通过遍历Cursor对象,可以获取到每个联系人的详细信息:```while (cursor.moveToNext()) {String name =cursor.getString(cursor.getColumnIndex(monDataKinds.Phone.DI SPLAY_NAME));String phone =cursor.getString(cursor.getColumnIndex(monDataKinds.Phone.N UMBER));// 处理联系人的信息}cursor.close();```二、添加联系人除了查找联系人外,添加联系人也是通讯录功能中常见的操作之一。
在一些移动应用中,用户可以通过应用内的界面直接添加联系人,并将其保存到手机通讯录中。
在iOS平台上,开发者可以使用CNContactStore类实现添加联系人的功能。
详解iOS获取通讯录的4种方式
详解iOS获取通讯录的4种⽅式本⽂实例为⼤家分享了iOS获取通讯录的4种⽅式,供⼤家参考,具体内容如下使⽤场景⼀些App通过⼿机号码来推荐好友,如微博、⽀付宝⾸先客户端会获取通讯录中的所有⼿机号然后将这些⼿机号提交到App服务器中,服务器会查找每个⼿机号对应的App账号如QQ号码返回到客户端,然后客户端根据服务器返回的账号列表来推荐好友。
获取联系⼈⽅式⽅案⼀:AddressBookUI.framework框架提供了联系⼈列表界⾯、联系⼈详情界⾯、添加联系⼈界⾯等⼀般⽤于选择联系⼈⽅案⼆:AddressBook.framework框架:没有提供UI界⾯,需要⾃⼰搭建联系⼈界⾯纯C语⾔的API,仅仅是获得联系⼈数据⼤部分数据类型是Core Foundation从iOS6 开始,需要得到⽤户的授权才能访问通讯录⽅案三:第三⽅框架:RHAddressBook对 AddressBook.framework 进⾏封装⽅案四:iOS9.0最新通讯录框架ContactsUI.framework : ⽅案1的替代品,特点:⾯向对象,使⽤简单,有界⾯Contacts.framework:⽅案2的替代品,特点:⾯向对象,使⽤简单,五界⾯⽅案⼀:AddressBookUI.framework实现步骤:1.创建选择联系⼈的控制器2.设置代理:⽤来接收⽤户选择的联系⼈信息3.弹出联系⼈控制器4.实现代理⽅法5.在对应的代理⽅法中获取联系⼈信息AddressBook.frame实现步骤:1.请求授权2.判断授权状态如果已授权则继续,如果未授权则提⽰⽤户3.创建通讯录对象4.从通讯录中获取所有的联系⼈5.遍历所有的联系⼈6.释放不再使⽤的对象AddreesBook.framework具体实现:1. AppDelegate 应⽤启动时请求授权#import "AppDelegate.h"#import <AddressBook/AddressBook.h>@interface AppDelegate ()@end@implementation AppDelegate- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {// Override point for customization after application launch.[self requestAuthorizationAddressBook];return YES;}- (void)requestAuthorizationAddressBook {// 判断是否授权ABAuthorizationStatus authorizationStatus = ABAddressBookGetAuthorizationStatus();if (authorizationStatus == kABAuthorizationStatusNotDetermined) {// 请求授权ABAddressBookRef addressBookRef = ABAddressBookCreate();ABAddressBookRequestAccessWithCompletion(addressBookRef, ^(bool granted, CFErrorRef error) {if (granted) { // 授权成功} else { // 授权失败NSLog(@"授权失败!");}});}}@end2. iOS10 需要在Info.plist配置NSContactsUsageDescription<key>NSContactsUsageDescription</key><string>请求访问通讯录</string>3. ViewController#import "ViewController.h"#import <AddressBook/AddressBook.h>@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];}- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {// 1. 判读授权ABAuthorizationStatus authorizationStatus = ABAddressBookGetAuthorizationStatus();if (authorizationStatus != kABAuthorizationStatusAuthorized) {NSLog(@"没有授权");return;}// 2. 获取所有联系⼈ABAddressBookRef addressBookRef = ABAddressBookCreate();CFArrayRef arrayRef = ABAddressBookCopyArrayOfAllPeople(addressBookRef);long count = CFArrayGetCount(arrayRef);for (int i = 0; i < count; i++) {//获取联系⼈对象的引⽤ABRecordRef people = CFArrayGetValueAtIndex(arrayRef, i);//获取当前联系⼈名字NSString *firstName=(__bridge NSString *)(ABRecordCopyValue(people, kABPersonFirstNameProperty));//获取当前联系⼈姓⽒NSString *lastName=(__bridge NSString *)(ABRecordCopyValue(people, kABPersonLastNameProperty));NSLog(@"--------------------------------------------------");NSLog(@"firstName=%@, lastName=%@", firstName, lastName);//获取当前联系⼈的电话数组NSMutaleArray *phoneArray = [[NSMutableArray alloc]init];ABMultiValueRef phones = ABRecordCopyValue(people, kABPersonPhoneProperty);for (NSInteger j=0; j<ABMultiValueGetCount(phones); j++) {NSString *phone = (__bridge NSString *)(ABMultiValueCopyValueAtIndex(phones, j));NSLog(@"phone=%@", phone);[phoneArray addObject:phone];}//获取当前联系⼈的邮箱注意是数组NSMutableArray *emailArray = [[NSMutableArray alloc]init];ABMultiValueRef emails= ABRecordCopyValue(people, kABPersonEmailProperty);for (NSInteger j=0; j<ABMultiValueGetCount(emails); j++) {NSString *email = (__bridge NSString *)(ABMultiValueCopyValueAtIndex(emails, j));NSLog(@"email=%@", email);[emailArray addObject:email];}//获取当前联系⼈中间名NSString *middleName=(__bridge NSString*)(ABRecordCopyValue(people, kABPersonMiddleNameProperty));//获取当前联系⼈的名字前缀NSString *prefix=(__bridge NSString*)(ABRecordCopyValue(people, kABPersonPrefixProperty));//获取当前联系⼈的名字后缀NSString *suffix=(__bridge NSString*)(ABRecordCopyValue(people, kABPersonSuffixProperty));//获取当前联系⼈的昵称NSString *nickName=(__bridge NSString*)(ABRecordCopyValue(people, kABPersonNicknameProperty));//获取当前联系⼈的名字拼⾳NSString *firstNamePhoneic=(__bridge NSString*)(ABRecordCopyValue(people, kABPersonFirstNamePhoneticProperty));//获取当前联系⼈的姓⽒拼⾳NSString *lastNamePhoneic=(__bridge NSString*)(ABRecordCopyValue(people, kABPersonLastNamePhoneticProperty));//获取当前联系⼈的中间名拼⾳NSString *middleNamePhoneic=(__bridge NSString*)(ABRecordCopyValue(people, kABPersonMiddleNamePhoneticProperty));//获取当前联系⼈的公司NSString *organization=(__bridge NSString*)(ABRecordCopyValue(people, kABPersonOrganizationProperty));//获取当前联系⼈的职位NSString *job=(__bridge NSString*)(ABRecordCopyValue(people, kABPersonJobTitleProperty));//获取当前联系⼈的部门NSString *department=(__bridge NSString*)(ABRecordCopyValue(people, kABPersonDepartmentProperty));//获取当前联系⼈的⽣⽇NSString *birthday=(__bridge NSDate*)(ABRecordCopyValue(people, kABPersonBirthdayProperty));//获取当前联系⼈的备注NSString *notes=(__bridge NSString*)(ABRecordCopyValue(people, kABPersonNoteProperty));//获取创建当前联系⼈的时间注意是NSDateNSDate *creatTime=(__bridge NSDate*)(ABRecordCopyValue(people, kABPersonCreationDateProperty));//获取最近修改当前联系⼈的时间NSDate *alterTime=(__bridge NSDate*)(ABRecordCopyValue(people, kABPersonModificationDateProperty));//获取地址ABMultiValueRef address = ABRecordCopyValue(people, kABPersonAddressProperty);for (int j=0; j<ABMultiValueGetCount(address); j++) {//地址类型NSString *type = (__bridge NSString *)(ABMultiValueCopyLabelAtIndex(address, j));NSDictionary * tempDic = (__bridge NSDictionary *)(ABMultiValueCopyValueAtIndex(address, j));//地址字符串,可以按需求格式化NSString *adress = [NSString stringWithFormat:@"国家:%@\n省:%@\n市:%@\n街道:%@\n邮编:%@",[temDic valueForKey:(NSString*)kABPersonAddressCountryKey],[tempDic valueForKey:(NSString*)kABPersonAddressStateKey],[tempDic valueForKey:(N }//获取当前联系⼈头像图⽚NSData *userImage=(__bridge NSData*)(ABPersonCopyImageData(people));//获取当前联系⼈纪念⽇NSMutableArray *dateArr = [[NSMutableArray alloc]init];ABMultiValueRef dates= ABRecordCopyValue(people, kABPersonDateProperty);for (NSInteger j=0; j<ABMultiValueGetCount(dates); j++) {//获取纪念⽇⽇期NSDate *data =(__bridge NSDate*)(ABMultiValueCopyValueAtIndex(dates, j));//获取纪念⽇名称NSString *str =(__bridge NSString*)(ABMultiValueCopyLabelAtIndex(dates, j));NSDictionary *tempDic = [NSDictionary dictionaryWithObject:data forKey:str];[dateArr addObject:tempDic];}}}@end4. 运⾏结果第三⽅框架:RHAddressBook该框架使⽤的MRC来管理内存的,如果直接将源代码拖⼊进去需要为每个⽂件设置编译标记:-fno-objc-arc,设置完还会报错,该项⽬使⽤的⼀些⽅法过于古⽼,很多都不⽀持了,所以这种⽅式不采⽤;可以将该项⽬打成静态库的⽅式;也可以直接将项⽬拖⼊到⾃⼰的⼯程中作为⼀个依赖1.直接将RHAddressBook.xcodeproj拖⼊到⼯程中2.添加Target Dependencies和Link Binary With Libraries3.Build Settings—> Other Linker Flags : -ObjC⽤于解决系统分类找不到⽅法的错误4.iOS10 需要在Info.plist配置NSContactsUsageDescription<key>NSContactsUsageDescription</key><string>请求访问通讯录</string>App启动时请求授权访问通讯录#import "AppDelegate.h"#import <RHAddressBook/RHAddressBook.h>@interface AppDelegate ()@end@implementation AppDelegate- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch.[self requestAuthorizationForAddressBook];return YES;}- (void)requestAuthorizationForAddressBook {RHAddressBook *ab = [[RHAddressBook alloc] init];if ([RHAddressBook authorizationStatus] == RHAuthorizationStatusNotDetermined){[ab requestAuthorizationWithCompletion:^(bool granted, NSError *error) {if (granted) {} else {NSLog(@"请求授权拒绝");}}];}}@end获取所有联系⼈的信息:姓名、⼿机号等#import "ViewController.h"#import <RHAddressBook/RHAddressBook.h>#import <RHAddressBook/AddressBook.h>@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];}- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {RHAddressBook *addressBook = [[RHAddressBook alloc] init];if ([RHAddressBook authorizationStatus] != RHAuthorizationStatusAuthorized){NSLog(@"没有授权");return;}NSArray *peopleArray= addressBook.people;for (int i = 0; i < peopleArray.count; i++) {RHPerson *people = (RHPerson *)peopleArray[i];NSLog(@"%@", );RHMultiStringValue *phoneNumbers = people.phoneNumbers;for (int i = 0; i < phoneNumbers.count; i++) {NSString* label= [phoneNumbers labelAtIndex:i];NSString* value= [phoneNumbers valueAtIndex:i];NSLog(@"label=%@, value=%@", label, value);}NSLog(@"----------------------------------------------");}}@end运⾏结果:ContactsUI.framework#import "ViewController.h"#import <ContactsUI/ContactsUI.h>@interface ViewController () <CNContactPickerDelegate>@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];CNContactPickerViewController *contactPickerViewController = [[CNContactPickerViewController alloc] init];contactPickerViewController.delegate = self;[self presentViewController:contactPickerViewController animated:YES completion:nil];}// 如果实现该⽅法当选中联系⼈时就不会再出现联系⼈详情界⾯,如果需要看到联系⼈详情界⾯只能不实现这个⽅法,- (void)contactPicker:(CNContactPickerViewController *)picker didSelectContact:(CNContact *)contact {NSLog(@"选中某⼀个联系⼈时调⽤---------------------------------");[self printContactInfo:contact];}// 同时选中多个联系⼈- (void)contactPicker:(CNContactPickerViewController *)picker didSelectContacts:(NSArray<CNContact *> *)contacts {for (CNContact *contact in contacts) {NSLog(@"================================================");[self printContactInfo:contact];}}- (void)printContactInfo:(CNContact *)contact {NSString *givenName = contact.givenName;NSString *familyName = contact.familyName;NSLog(@"givenName=%@, familyName=%@", givenName, familyName);NSArray * phoneNumbers = contact.phoneNumbers;for (CNLabeledValue<CNPhoneNumber*>*phone in phoneNumbers) {NSString *label = bel;CNPhoneNumber *phonNumber = (CNPhoneNumber *)phone.value;NSLog(@"label=%@, value=%@", label, phonNumber.stringValue);}}// 注意:如果实现该⽅法,上⾯那个⽅法就不能实现了,这两个⽅法只能实现⼀个//- (void)contactPicker:(CNContactPickerViewController *)picker didSelectContactProperty:(CNContactProperty *)contactProperty { // NSLog(@"选中某个联系⼈的某个属性时调⽤");//}@end选择单个联系⼈时运⾏效果:选择多个联系⼈的界⾯:Contact.frameworkiOS10 需要在Info.plist配置NSContactsUsageDescription<key>NSContactsUsageDescription</key><string>请求访问通讯录</string>应⽤启动时请求授权:#import "AppDelegate.h"#import <Contacts/Contacts.h>@interface AppDelegate ()@end@implementation AppDelegate- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {// Override point for customization after application launch.[self requestAuthorizationForAddressBook];return YES;}- (void)requestAuthorizationForAddressBook {CNAuthorizationStatus authorizationStatus = [CNContactStore authorizationStatusForEntityType:CNEntityTypeContacts];if (authorizationStatus == CNAuthorizationStatusNotDetermined) {CNContactStore *contactStore = [[CNContactStore alloc] init];[contactStore requestAccessForEntityType:CNEntityTypeContacts completionHandler:^(BOOL granted, NSError * _Nullable error) { if (granted) {} else {NSLog(@"授权失败, error=%@", error);}}];}}@end获取通讯录信息#import "ViewController.h"#import <Contacts/Contacts.h>@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];}- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {CNAuthorizationStatus authorizationStatus = [CNContactStore authorizationStatusForEntityType:CNEntityTypeContacts];if (authorizationStatus == CNAuthorizationStatusAuthorized) {NSLog(@"没有授权...");}// 获取指定的字段,并不是要获取所有字段,需要指定具体的字段NSArray *keysToFetch = @[CNContactGivenNameKey, CNContactFamilyNameKey, CNContactPhoneNumbersKey];CNContactFetchRequest *fetchRequest = [[CNContactFetchRequest alloc] initWithKeysToFetch:keysToFetch];CNContactStore *contactStore = [[CNContactStore alloc] init];[contactStore enumerateContactsWithFetchRequest:fetchRequest error:nil usingBlock:^(CNContact * _Nonnull contact, BOOL * _Nonnull stop) { NSLog(@"-------------------------------------------------------");NSString *givenName = contact.givenName;NSString *familyName = contact.familyName;NSLog(@"givenName=%@, familyName=%@", givenName, familyName);NSArray *phoneNumbers = contact.phoneNumbers;for (CNLabeledValue *labelValue in phoneNumbers) {NSString *label = bel;CNPhoneNumber *phoneNumber = labelValue.value;NSLog(@"label=%@, phone=%@", label, phoneNumber.stringValue);}// *stop = YES; // 停⽌循环,相当于break;}];}@end运⾏效果:以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
WPS实用技巧如何使用数据表字段提取
WPS实用技巧如何使用数据表字段提取数据表字段提取是一项非常实用的技巧,它可以帮助用户快速、准确地提取数据表中的特定字段,提高工作效率。
在WPS中,我们可以利用数据表字段提取功能轻松实现这一操作。
本文将向您介绍如何使用WPS实用技巧中的数据表字段提取功能。
第一步:打开WPS表格在使用WPS实用技巧进行数据表字段提取之前,首先需要打开WPS表格。
您可以在WPS办公软件的界面中选择“表格”来打开WPS 表格。
第二步:准备数据表在进行数据表字段提取之前,需要先准备好相应的数据表。
您可以在WPS表格中新建一个表格,并输入您需要进行字段提取的数据。
第三步:选择数据表在WPS表格中,点击需要进行字段提取的数据表的标签页,确保您已经选中了正确的数据表,以便进行后续的操作。
第四步:点击“数据”选项卡在WPS表格的菜单栏中,找到“数据”选项卡,并单击它。
在“数据”选项卡的下拉菜单中,您可以看到“文本到列”、“分列”和“字段提取”等功能。
第五步:选择“字段提取”点击“数据”选项卡下拉菜单中的“字段提取”,WPS表格将弹出“字段提取”对话框。
第六步:设置字段提取规则在“字段提取”对话框中,您可以设置字段提取的规则。
首先,在“文本”框中输入您要提取的字段,可以是文字、数字或公式等。
其次,在“模式”框中选择您要提取字段的模式,例如,提取数字、提取文字或提取日期等。
接下来,在“选项”框中选择额外的提取选项,如是否保留原始数据和提取到哪一列等。
第七步:点击“确定”在设置好字段提取规则后,点击“确定”按钮。
WPS表格将根据您的设置,在相应的位置提取出符合规则的字段。
第八步:查看提取结果WPS表格将根据您的设置,在提取字段的位置显示提取结果。
您可以通过滚动视图或调整单元格大小来查看所有提取结果。
总结:通过使用WPS实用技巧中的数据表字段提取功能,您可以轻松地在WPS表格中提取特定的字段。
这项技巧可以大大提高数据处理的效率,减少繁琐的手动操作。
find提取字段的公式
find提取字段的公式在数据处理和分析的过程中,经常需要从给定的文本或字符串中提取特定的字段。
为了能够准确地提取所需的字段,可以使用一些特定的公式和函数来实现。
下面将介绍一些常见的公式用于提取字段。
1. MID函数:MID函数可以从文本中提取指定位置的字符。
可以使用MID函数来提取字段中的特定字符或字母。
公式的格式如下所示:MID(文本, 起始位置, 字符数)例如,假设我们要从字符串“Hello World”中提取“World”,我们可以使用以下公式:MID(“Hello World”, 7, 5)2. LEFT函数:LEFT函数用于从字符串的左侧开始提取字符。
可以使用LEFT函数来提取字段中的开头字符。
公式的格式如下所示:LEFT(文本, 字符数)例如,如果我们要从字符串“John Doe”中提取“John”,我们可以使用以下公式:LEFT(“John Doe”, 4)3. RIGHT函数:RIGHT函数与LEFT函数相反,它用于从字符串的右侧开始提取字符。
可以使用RIGHT函数来提取字段中的结尾字符。
公式的格式如下所示: RIGHT(文本, 字符数)例如,如果我们要从字符串“John Doe”中提取“Doe”,我们可以使用以下公式:RIGHT(“John Doe”, 3)4. FIND函数:FIND函数用于在文本中查找子字符串,并返回子字符串的起始位置。
可以结合LEFT和RIGHT函数使用FIND函数来提取字段中位于两个特定字符之间的内容。
公式的格式如下所示:LEFT(RIGHT(文本, LEN(文本)-FIND(起始字符, 文本)-LEN(起始字符)+1), FIND(结束字符, RIGHT(文本, LEN(文本)-FIND(起始字符, 文本)-LEN(起始字符)+1))-1)例如,如果我们要从字符串“John Doe, Age: 30”中提取“Age”,我们可以使用以下公式:LEFT(RIGHT(“John Doe, Age: 30”, LEN(“John Doe, Age: 30”)-FIND(“Age:”, “John Doe, Age: 30”)-LEN(“Age:”)+1), FIND(“,”, RIGHT(“John Doe, Age: 30”,LEN(“John Doe, Age: 30”)-FIND(“Age:”, “John Doe, Age: 30”)-LEN(“Age:”)+1))-1)以上是常见用于提取字段的公式的介绍。
find提取字段的公式
find提取字段的公式
摘要:
1.公式提取字段简介
2.常见的提取字段公式
3.使用公式提取字段的步骤
4.注意事项
正文:
公式提取字段是Excel 中常用的一种操作,通过公式,我们可以快速地从大量数据中提取出需要的字段。
本文将详细介绍公式提取字段的相关内容。
首先,我们需要了解常见的提取字段公式。
一般来说,提取字段公式可以分为以下几类:
- 提取字符串中的某个部分:如Left、Right、Mid 函数;
- 提取数字:如`=INT()`、`=ROUND()`等函数;
- 提取特定格式的数据:如`=IF()`、`=IFERROR()`等函数;
- 提取满足条件的数据:如`=SUMIF()`、`=COUNTIF()`等函数。
了解常见的提取字段公式后,我们来看如何使用公式提取字段。
一般来说,使用公式提取字段需要以下几个步骤:
1.选定需要提取字段的单元格;
2.输入公式,按下`Ctrl+Enter`,快速填充公式;
3.根据需要,对公式进行相应的调整。
在使用公式提取字段的过程中,有一些注意事项需要提醒大家:
1.确保输入的公式正确无误,避免因为公式错误导致的结果偏差;
2.在使用公式提取字段时,要确保数据的格式统一,避免因格式不同导致提取错误;
3.对于复杂的数据提取需求,可以使用嵌套公式或使用更高级的函数进行操作。
总之,公式提取字段是Excel 中非常实用的操作,熟练掌握各种提取字段公式,可以帮助我们提高工作效率,更好地处理数据。
CRM系统的四种搜索客户资料方法
CRM系统的四种搜索客户资料方法
CRM系统作为客户资源管理的平台,保存有着大量客户、合同、订单、销售等数据,对于日常需要查询客户资料的业务人员来说非常重要,如果想要便捷的查询客户资料就需要用到搜索功能了。
CRM系统如何搜索客户资料?
1.全局搜索
CRM系统支持全字段搜索,企业可以根据业务需要自定义字段,如常用的客户名称、所属地区、联系方式、联系人名称、产品类型,当业务人员需要查询某一位客户资料时,按照字段全局搜索可以显著提高工作效率。
2.模块搜索
如果您需要查询客户资料,那么进入到模块搜索信息将更加精准。
如需要查询参与了9月份市场活动的客户,可以在跟进记录中搜索市场活动,相关的客户列表就出来了。
当然在市场活动模块中也可以直接看到相关客户列表。
3.多条件搜索
多条件搜索比较适合筛选满足多个条件的客户,如拜访了两次的客户、参与了两次市场活动的客户、购买了两次产品的客户,通过多条件搜索:参与了9月份活动且参与了10月份活动的客户进行过滤。
4.标签搜索
对于比较常用到的搜索条件可以进行设置为标签,例如本周重点客户待跟进、本月发货订单、客户报价、客户成交额等等。
标签生成后,可以设置个人专属也能共享给团队,组织成员可以在CRM动态中和团队交流CRM系统搜索心得,可以显著的提高团队协作效率。
Zoho能提供非常多种的客户搜索方式,杜绝客户资料无处查询的情况,企业可以根据不同应用场景,采用更适合的方式快速查询。
如有任何问题可以与我们沟通交流。
话单分析系统的数据提取功能描述
话单分析系统的数据提取功能描述话单分析系统是一种用于分析和管理通信网络中话单数据的工具。
话单是记录通信活动的数据,包括呼叫时间、呼叫方、被呼叫方、通话时长等信息。
数据提取功能是话单分析系统的核心功能之一,它具备从庞大的话单库中提取特定数据的能力,以满足用户的需求。
数据提取功能主要包括以下几个方面:1. 话单查询:用户可以根据特定的查询条件进行话单检索。
系统支持多种查询方式,如按呼叫时间、呼叫方、被呼叫方、通话时长等进行查询,以便用户准确找到所需的话单数据。
查询结果根据用户的权限以及查询条件进行过滤,确保只展示符合用户权限的数据。
2. 条件过滤:为了提高数据提取的灵活性,系统提供了条件过滤功能。
用户可以根据自定义的条件,设置筛选规则,以便从海量数据中提取符合条件的数据。
条件过滤功能可以根据话单中的各种属性(如呼叫时间、通话时长、通话类型等)进行筛选,满足用户特定的数据需求。
3. 数据导出:提取的话单数据可以通过数据导出功能转化为常见的文件格式,如Excel、CSV等,方便用户进一步处理和分析。
系统支持将数据导出到本地文件或数据库中,以满足不同用户的需求。
4. 数据可视化:为了方便用户对提取的数据进行分析和理解,系统提供了数据可视化功能。
通过图表、统计分析等方式,将庞大的数据转化为直观的图形展示,帮助用户更好地理解数据特征和趋势。
5. 数据定制:为了满足不同用户对数据的特殊需求,系统支持数据定制功能。
用户可以定义自己的指标,进行数据分析和提取。
系统提供了灵活的数据处理工具,如数据清洗、数据转换等,以满足用户特定的业务需求。
6. 数据安全性:系统对话单数据的提取和访问进行严格的权限管理和安全控制。
只有符合权限要求的用户才能进行数据提取操作,并且系统会记录每次数据提取的详细信息,确保数据的安全性和可追溯性。
在实际应用中,话单分析系统的数据提取功能对于电信运营商、数据分析师以及业务管理者等都具有重要的价值。
excel 查找 字段
excel 查找字段
在Excel中,查找特定字段是一项非常重要的任务。
这主要是因为 Excel 表格往往会包含大量的数据,并且这些数据可能会非常复杂。
为了更好地处理这些数据,我们需要使用 Excel 中的查找功能。
首先,我们需要选择要查找的单元格范围。
然后,我们可以使用“查找”功能来查找我们需要的字段。
在“查找”对话框中,我们可以输入要查找的字段,并可以选择搜索范围和搜索选项。
如果我们只需要查找一个特定的单元格,我们可以直接使用“查找”功能。
但是,如果我们需要查找多个单元格,我们可以使用 Excel 中的“查找和替换”功能。
这个功能允许我们查找多个单元格,并将它们替换为不同的值。
总之,在 Excel 中查找字段是一项非常重要的任务,因为它可以帮助我们更好地处理大量的数据。
通过使用 Excel 中的查找和替换功能,我们可以更轻松地查找和修改数据。
- 1 -。
读取联系人信息的方法,电话号码,姓名,邮箱地址
读取联系⼈信息的⽅法,电话号码,姓名,邮箱地址搞了⼀下午才明⽩那么点点package com.chapter5;import android.app.Activity;import android.content.Intent;import android.database.Cursor;import android.os.Bundle;import android.provider.Contacts.People;import monDataKinds.Phone;import android.provider.ContactsContract.*;import android.widget.TextView;public class S523result extends Activity{private TextView tv;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsetContentView(yout.s523result);tv = (TextView)findViewById(R.id.S523resultTV);Intent intent = getIntent();Bundle data = intent.getExtras();String name = "'" + data.getString("name").toString() +"'";//注意单引号String[] args = { name };String[] projection = new String[] {PhoneLookup._ID,PhoneLookup.DISPLAY_NAME,Phone.NUMBER};//以下就是⼀条select语句Cursor cursor = managedQuery(CommonDataKinds.Phone.CONTENT_URI,projection, PhoneLookup.DISPLAY_NAME + "=" + name, null, null);if(cursor.moveToFirst()){String name1 = cursor.getString(1);String number = cursor.getString(2);tv.append("姓名:" + name1 + "\n电话号码:" + number + "\n");}super.onCreate(savedInstanceState);}}另外⼀个处理:String[] projection = {Contacts._ID,Contacts.DISPLAY_NAME,Contacts.HAS_PHONE_NUMBER};Cursor cursor = managedQuery(Contacts.CONTENT_URI, projection,Contacts.DISPLAY_NAME + "=" + name, null, null);String info = "";if(cursor.moveToFirst()){String name1 = cursor.getString(1);String contactId = cursor.getString(0);info += "姓名:" + name1;name1 = "'" + name1 + "'";if(cursor.getInt(2) == 1){cursor = managedQuery(Phone.CONTENT_URI,new String[] { Phone.NUMBER },Phone.DISPLAY_NAME + "=" + name1, null, null);if(cursor.moveToFirst()){String numStr = cursor.getString(0);info += "\n电话号码:" + numStr;}}cursor = managedQuery(Email.CONTENT_URI,new String[] { Email.DATA },Email.CONTACT_ID + "=" + contactId, null, null);if(cursor.moveToFirst()){String email = cursor.getString(0);info += "\n邮箱地址:" + email;}}。
如何获取联系人所有字段
package cn.ihope.mozyhome.util;import java.util.ArrayList;import java.util.List;import org.json.JSONException;import org.json.JSONObject;import android.content.Context;import android.database.Cursor;import monDataKinds.Email;import monDataKinds.Event;import monDataKinds.Im;import monDataKinds.Nickname; import monDataKinds.Note;import anization; import monDataKinds.Phone;import monDataKinds.StructuredName; import monDataKinds.StructuredPostal; import monDataKinds.Website;import android.provider.ContactsContract.Data;import android.util.Log;import cn.ihope.mozyhome.domain.Contacts;public class GetContactsInfo {private List<Contacts> list;private Context context;private JSONObject contactData;private JSONObject jsonObject;public GetContactsInfo(Context context) {this.context = context;}public String getContactInfo() throws JSONException {// 获得通讯录信息,URI是ContactsContract.Contacts.CONTENT_URIlist = new ArrayList<Contacts>();contactData = new JSONObject();String mimetype = "";int oldrid = -1;int contactId = -1;Cursor cursor = context.getContentResolver().query(Data.CONTENT_URI,null, null, null, Data.RAW_CONTACT_ID);int numm=0;while (cursor.moveToNext()) {contactId = cursor.getInt(cursor.getColumnIndex(Data.RAW_CONTACT_ID));if (oldrid != contactId) {jsonObject = new JSONObject();contactData.put("contact" + numm, jsonObject);numm++;oldrid = contactId;}// 取得mimetype类型mimetype = cursor.getString(cursor.getColumnIndex(Data.MIMETYPE));// 获得通讯录中每个联系人的ID// 获得通讯录中联系人的名字if (StructuredName.CONTENT_ITEM_TYPE.equals(mimetype)) {// String display_name =cursor.getString(cursor.getColumnIndex(StructuredName.DISPLAY_NAME));String prefix = cursor.getString(cursor.getColumnIndex(StructuredName.PREFIX));jsonObject.put("prefix", prefix);String firstName =cursor.getString(cursor.getColumnIndex(StructuredName.FAMILY_NAME));jsonObject.put("firstName", firstName);String middleName =cursor.getString(cursor.getColumnIndex(StructuredName.MIDDLE_NAME));jsonObject.put("middleName", middleName);String lastname =cursor.getString(cursor.getColumnIndex(StructuredName.GIVEN_NAME));jsonObject.put("lastname", lastname);String suffix = cursor.getString(cursor.getColumnIndex(StructuredName.SUFFIX));jsonObject.put("suffix", suffix);String phoneticFirstName =cursor.getString(cursor.getColumnIndex(StructuredName.PHONETIC_FAMILY_NAME)); jsonObject.put("phoneticFirstName", phoneticFirstName);String phoneticMiddleName =cursor.getString(cursor.getColumnIndex(StructuredName.PHONETIC_MIDDLE_NAME)); jsonObject.put("phoneticMiddleName", phoneticMiddleName);String phoneticLastName =cursor.getString(cursor.getColumnIndex(StructuredName.PHONETIC_GIVEN_NAME)); jsonObject.put("phoneticLastName", phoneticLastName);}// 获取电话信息if (Phone.CONTENT_ITEM_TYPE.equals(mimetype)) {// 取出电话类型int phoneType = cursor.getInt(cursor.getColumnIndex(Phone.TYPE));// 手机if (phoneType == Phone.TYPE_MOBILE) {String mobile = cursor.getString(cursor.getColumnIndex(Phone.NUMBER));jsonObject.put("mobile", mobile);}// 住宅电话if (phoneType == Phone.TYPE_HOME) {String homeNum = cursor.getString(cursor.getColumnIndex(Phone.NUMBER));jsonObject.put("homeNum", homeNum);}// 单位电话if (phoneType == Phone.TYPE_WORK) {String jobNum = cursor.getString(cursor.getColumnIndex(Phone.NUMBER));jsonObject.put("jobNum", jobNum);}// 单位传真if (phoneType == Phone.TYPE_FAX_WORK) {String workFax = cursor.getString(cursor.getColumnIndex(Phone.NUMBER));jsonObject.put("workFax", workFax);}// 住宅传真if (phoneType == Phone.TYPE_FAX_HOME) {String homeFax = cursor.getString(cursor.getColumnIndex(Phone.NUMBER));jsonObject.put("homeFax", homeFax);}// 寻呼机if (phoneType == Phone.TYPE_PAGER) {String pager = cursor.getString(cursor.getColumnIndex(Phone.NUMBER));jsonObject.put("pager", pager);}// 回拨号码if (phoneType == Phone.TYPE_CALLBACK) {String quickNum = cursor.getString(cursor.getColumnIndex(Phone.NUMBER)); jsonObject.put("quickNum", quickNum);}// 公司总机if (phoneType == Phone.TYPE_COMPANY_MAIN) {String jobTel = cursor.getString(cursor.getColumnIndex(Phone.NUMBER));jsonObject.put("jobTel", jobTel);}// 车载电话if (phoneType == Phone.TYPE_CAR) {String carNum = cursor.getString(cursor.getColumnIndex(Phone.NUMBER));jsonObject.put("carNum", carNum);}// ISDNif (phoneType == Phone.TYPE_ISDN) {String isdn = cursor.getString(cursor.getColumnIndex(Phone.NUMBER));jsonObject.put("isdn", isdn);}// 总机if (phoneType == Phone.TYPE_MAIN) {String tel = cursor.getString(cursor.getColumnIndex(Phone.NUMBER));jsonObject.put("tel", tel);}// 无线装置if (phoneType == Phone.TYPE_RADIO) {String wirelessDev = cursor.getString(cursor.getColumnIndex(Phone.NUMBER));jsonObject.put("wirelessDev", wirelessDev);}// 电报if (phoneType == Phone.TYPE_TELEX) {String telegram = cursor.getString(cursor.getColumnIndex(Phone.NUMBER));jsonObject.put("telegram", telegram);}// TTY_TDDif (phoneType == Phone.TYPE_TTY_TDD) {String tty_tdd = cursor.getString(cursor.getColumnIndex(Phone.NUMBER));jsonObject.put("tty_tdd", tty_tdd);}// 单位手机if (phoneType == Phone.TYPE_WORK_MOBILE) {String jobMobile = cursor.getString(cursor.getColumnIndex(Phone.NUMBER));jsonObject.put("jobMobile", jobMobile);}// 单位寻呼机if (phoneType == Phone.TYPE_WORK_PAGER) {String jobPager = cursor.getString(cursor.getColumnIndex(Phone.NUMBER));jsonObject.put("jobPager", jobPager);}// 助理if (phoneType == Phone.TYPE_ASSISTANT) {String assistantNum = cursor.getString(cursor.getColumnIndex(Phone.NUMBER)); jsonObject.put("assistantNum", assistantNum);}// 彩信if (phoneType == Phone.TYPE_MMS) {String mms = cursor.getString(cursor.getColumnIndex(Phone.NUMBER));jsonObject.put("mms", mms);}}// }// 查找email地址if (Email.CONTENT_ITEM_TYPE.equals(mimetype)) {// 取出邮件类型int emailType = cursor.getInt(cursor.getColumnIndex(Email.TYPE));// 住宅邮件地址if (emailType == Email.TYPE_CUSTOM) {String homeEmail = cursor.getString(cursor.getColumnIndex(Email.DATA)); jsonObject.put("homeEmail", homeEmail);}// 住宅邮件地址else if (emailType == Email.TYPE_HOME) {String homeEmail = cursor.getString(cursor.getColumnIndex(Email.DATA)); jsonObject.put("homeEmail", homeEmail);}// 单位邮件地址if (emailType == Email.TYPE_CUSTOM) {String jobEmail = cursor.getString(cursor.getColumnIndex(Email.DATA));jsonObject.put("jobEmail", jobEmail);}// 单位邮件地址else if (emailType == Email.TYPE_WORK) {String jobEmail = cursor.getString(cursor.getColumnIndex(Email.DATA));jsonObject.put("jobEmail", jobEmail);}// 手机邮件地址if (emailType == Email.TYPE_CUSTOM) {String mobileEmail = cursor.getString(cursor.getColumnIndex(Email.DATA)); jsonObject.put("mobileEmail", mobileEmail);}// 手机邮件地址else if (emailType == Email.TYPE_MOBILE) {String mobileEmail = cursor.getString(cursor.getColumnIndex(Email.DATA));jsonObject.put("mobileEmail", mobileEmail);}}// 查找event地址if (Event.CONTENT_ITEM_TYPE.equals(mimetype)) {// 取出时间类型int eventType = cursor.getInt(cursor.getColumnIndex(Event.TYPE));// 生日if (eventType == Event.TYPE_BIRTHDAY) {String birthday = cursor.getString(cursor.getColumnIndex(Event.START_DATE));jsonObject.put("birthday", birthday);}// 周年纪念日if (eventType == Event.TYPE_ANNIVERSARY) {String anniversary = cursor.getString(cursor.getColumnIndex(Event.START_DATE)); jsonObject.put("anniversary", anniversary);}}// 即时消息if (Im.CONTENT_ITEM_TYPE.equals(mimetype)) {// 取出即时消息类型int protocal = cursor.getInt(cursor.getColumnIndex(Im.PROTOCOL));if (Im.TYPE_CUSTOM == protocal) {String workMsg = cursor.getString(cursor.getColumnIndex(Im.DATA));jsonObject.put("workMsg", workMsg);}else if (Im.PROTOCOL_MSN == protocal) {String workMsg = cursor.getString(cursor.getColumnIndex(Im.DATA));jsonObject.put("workMsg", workMsg);}if (Im.PROTOCOL_QQ == protocal) {String instantsMsg = cursor.getString(cursor.getColumnIndex(Im.DATA));jsonObject.put("instantsMsg", instantsMsg);}}// 获取备注信息if (Note.CONTENT_ITEM_TYPE.equals(mimetype)) {String remark = cursor.getString(cursor.getColumnIndex(Note.NOTE));jsonObject.put("remark", remark);}// 获取昵称信息if (Nickname.CONTENT_ITEM_TYPE.equals(mimetype)) {String nickName = cursor.getString(cursor.getColumnIndex());jsonObject.put("nickName", nickName);}// 获取组织信息if (Organization.CONTENT_ITEM_TYPE.equals(mimetype)) {// 取出组织类型int orgType = cursor.getInt(cursor.getColumnIndex(Organization.TYPE));// 单位if (orgType == Organization.TYPE_CUSTOM) {// if (orgType == Organization.TYPE_WORK) {String company = cursor.getString(cursor.getColumnIndex(PANY)); jsonObject.put("company", company);String jobTitle = cursor.getString(cursor.getColumnIndex(Organization.TITLE));jsonObject.put("jobTitle", jobTitle);String department =cursor.getString(cursor.getColumnIndex(Organization.DEPARTMENT));jsonObject.put("department", department);}}// 获取网站信息if (Website.CONTENT_ITEM_TYPE.equals(mimetype)) {// 取出组织类型int webType = cursor.getInt(cursor.getColumnIndex(Website.TYPE));// 主页if (webType == Website.TYPE_CUSTOM) {String home = cursor.getString(cursor.getColumnIndex(Website.URL));jsonObject.put("home", home);}// 主页else if (webType == Website.TYPE_HOME) {String home = cursor.getString(cursor.getColumnIndex(Website.URL));jsonObject.put("home", home);}// 个人主页if (webType == Website.TYPE_HOMEPAGE) {String homePage = cursor.getString(cursor.getColumnIndex(Website.URL));jsonObject.put("homePage", homePage);}// 工作主页if (webType == Website.TYPE_WORK) {String workPage = cursor.getString(cursor.getColumnIndex(Website.URL));jsonObject.put("workPage", workPage);}}// 查找通讯地址if (StructuredPostal.CONTENT_ITEM_TYPE.equals(mimetype)) {// 取出邮件类型int postalType = cursor.getInt(cursor.getColumnIndex(StructuredPostal.TYPE));// 单位通讯地址if (postalType == StructuredPostal.TYPE_WORK) {String street = cursor.getString(cursor.getColumnIndex(StructuredPostal.STREET)); jsonObject.put("street", street);String ciry = cursor.getString(cursor.getColumnIndex(StructuredPostal.CITY));jsonObject.put("ciry", ciry);String box = cursor.getString(cursor.getColumnIndex(StructuredPostal.POBOX));jsonObject.put("box", box);String area =cursor.getString(cursor.getColumnIndex(StructuredPostal.NEIGHBORHOOD));jsonObject.put("area", area);String state = cursor.getString(cursor.getColumnIndex(StructuredPostal.REGION));jsonObject.put("state", state);String zip = cursor.getString(cursor.getColumnIndex(StructuredPostal.POSTCODE)); jsonObject.put("zip", zip);String country =cursor.getString(cursor.getColumnIndex(StructuredPostal.COUNTRY));jsonObject.put("country", country);}// 住宅通讯地址if (postalType == StructuredPostal.TYPE_HOME) {String homeStreet =cursor.getString(cursor.getColumnIndex(StructuredPostal.STREET));jsonObject.put("homeStreet", homeStreet);String homeCity = cursor.getString(cursor.getColumnIndex(StructuredPostal.CITY));jsonObject.put("homeCity", homeCity);String homeBox = cursor.getString(cursor.getColumnIndex(StructuredPostal.POBOX)); jsonObject.put("homeBox", homeBox);String homeArea =cursor.getString(cursor.getColumnIndex(StructuredPostal.NEIGHBORHOOD));jsonObject.put("homeArea", homeArea);String homeState =cursor.getString(cursor.getColumnIndex(StructuredPostal.REGION));jsonObject.put("homeState", homeState);String homeZip =cursor.getString(cursor.getColumnIndex(StructuredPostal.POSTCODE));jsonObject.put("homeZip", homeZip);String homeCountry =cursor.getString(cursor.getColumnIndex(StructuredPostal.COUNTRY));jsonObject.put("homeCountry", homeCountry);}// 其他通讯地址if (postalType == StructuredPostal.TYPE_OTHER) {String otherStreet =cursor.getString(cursor.getColumnIndex(StructuredPostal.STREET));jsonObject.put("otherStreet", otherStreet);String otherCity = cursor.getString(cursor.getColumnIndex(StructuredPostal.CITY));jsonObject.put("otherCity", otherCity);String otherBox = cursor.getString(cursor.getColumnIndex(StructuredPostal.POBOX)); jsonObject.put("otherBox", otherBox);String otherArea =cursor.getString(cursor.getColumnIndex(StructuredPostal.NEIGHBORHOOD));jsonObject.put("otherArea", otherArea);String otherState =cursor.getString(cursor.getColumnIndex(StructuredPostal.REGION));jsonObject.put("otherState", otherState);String otherZip =cursor.getString(cursor.getColumnIndex(StructuredPostal.POSTCODE));jsonObject.put("otherZip", otherZip);String otherCountry =cursor.getString(cursor.getColumnIndex(StructuredPostal.COUNTRY));jsonObject.put("otherCountry", otherCountry);}}}cursor.close();Log.i("contactData", contactData.toString());return contactData.toString();}}。
excel 通配符提取字段
excel 通配符提取字段在Excel中,你可以使用通配符来提取特定字段。
通配符是一种特殊字符,用于匹配文本中的一部分内容。
常用的通配符有:- 星号(*):匹配任意字符或任意数量的字符。
- 问号(?):匹配任意单个字符。
- 方括号([]):匹配方括号内的任意一个字符。
以下是一些示例,演示如何使用通配符提取字段:1. 提取以 "apple" 开头的单词:```=IF(LEFT(A1, 5) = "apple", A1, "")```这个公式将检查单元格A1的内容是否以"apple" 开头,如果是则返回该单元格的内容,否则返回空字符串。
2. 提取包含 "excel" 的单词:```=IF(ISNUMBER(SEARCH("excel", A1)), A1, "")```这个公式将在单元格A1的内容中搜索"excel",如果找到则返回该单元格的内容,否则返回空字符串。
SEARCH函数返回"excel" 在文本中的位置,如果找不到则返回错误值。
3. 提取以任意字符开头,以 "world" 结尾的单词:```=IF(AND(LEFT(A1, 1) <> "", RIGHT(A1, 5) = "world"), A1, "")```这个公式将检查单元格A1的内容是否以非空字符开头,并且以"world" 结尾。
如果是则返回该单元格的内容,否则返回空字符串。
以上是一些基本的示例,你可以根据实际需求使用不同的通配符和函数来提取字段。
请注意,这些公式可能对大数据量的情况效率不高,你可能需要使用更高级的方法来处理大型数据集。
excel选取字段 -回复
excel选取字段-回复关于如何在Excel中选取字段的方法。
Microsoft Excel是一款功能强大的电子表格软件,广泛应用于数据分析、报表制作等工作中。
在使用Excel时,经常需要从大量的数据中筛选、提取特定的字段,以便进行相关的计算或者分析。
本文将从基础到高级,一步一步地介绍如何在Excel中选取字段。
首先,打开Excel并导入你的数据表格。
假设你已经有一个包含大量数据的工作簿,其中包含多个工作表,每个工作表上有多个列和行。
我们将以“[excel选取字段]”作为主题,从中提取相关内容。
第一步,找到要选取字段的工作表。
在Excel工作簿的底部,可以看到多个标签页,每个标签页代表一个工作表。
点击相应的标签页,即可切换到要操作的工作表。
第二步,选取要提取字段的列。
在Excel中,每一列都由一个字母表示,例如A列、B列等。
要选取字段,首先需要确定字段所在的列。
常见的方法是使用鼠标左键点击列标题(例如A、B、C等),整列就会被选中,然后可以使用鼠标右键点击选中的列,选择“复制”或者“剪切”命令。
第三步,粘贴选中字段。
将鼠标移动到目标位置,即要将提取的字段粘贴到的位置,然后使用鼠标右键点击,选择“粘贴”命令。
这样,选中的字段就成功地被粘贴到目标位置了。
此外,在Excel中还有一些高级的字段选取方法,可以更加灵活和高效地选取字段。
下面介绍两种常用的高级选取方法。
第四步,使用Excel的“筛选”功能选取字段。
在Excel的菜单栏中,可以找到“数据”选项卡。
点击“数据”,然后选择“筛选”,接着在数据表的列标题上出现筛选按钮。
点击列标题旁边的筛选按钮,弹出筛选面板。
在面板上选择所需的条件,点击确定即可筛选出符合条件的字段。
第五步,使用Excel的“高级筛选”功能选取字段。
在Excel的菜单栏中,点击“数据”,然后选择“高级”,在弹出的对话框中选择要筛选的数据区域和条件区域,最后点击确定。
这样,Excel会根据设定的条件筛选并显示符合条件的字段。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
package cn.ihope.mozyhome.util;import java.util.ArrayList;import java.util.List;import org.json.JSONException;import org.json.JSONObject;import android.content.Context;import android.database.Cursor;import monDataKinds.Email;import monDataKinds.Event;import monDataKinds.Im;import monDataKinds.Nickname; import monDataKinds.Note;import anization; import monDataKinds.Phone;import monDataKinds.StructuredName; import monDataKinds.StructuredPostal; import monDataKinds.Website;import android.provider.ContactsContract.Data;import android.util.Log;import cn.ihope.mozyhome.domain.Contacts;public class GetContactsInfo {private List<Contacts> list;private Context context;private JSONObject contactData;private JSONObject jsonObject;public GetContactsInfo(Context context) {this.context = context;}public String getContactInfo() throws JSONException {// 获得通讯录信息,URI是ContactsContract.Contacts.CONTENT_URIlist = new ArrayList<Contacts>();contactData = new JSONObject();String mimetype = "";int oldrid = -1;int contactId = -1;Cursor cursor = context.getContentResolver().query(Data.CONTENT_URI,null, null, null, Data.RAW_CONTACT_ID);int numm=0;while (cursor.moveToNext()) {contactId = cursor.getInt(cursor.getColumnIndex(Data.RAW_CONTACT_ID));if (oldrid != contactId) {jsonObject = new JSONObject();contactData.put("contact" + numm, jsonObject);numm++;oldrid = contactId;}// 取得mimetype类型mimetype = cursor.getString(cursor.getColumnIndex(Data.MIMETYPE));// 获得通讯录中每个联系人的ID// 获得通讯录中联系人的名字if (StructuredName.CONTENT_ITEM_TYPE.equals(mimetype)) {// String display_name =cursor.getString(cursor.getColumnIndex(StructuredName.DISPLAY_NAME));String prefix = cursor.getString(cursor.getColumnIndex(StructuredName.PREFIX));jsonObject.put("prefix", prefix);String firstName =cursor.getString(cursor.getColumnIndex(StructuredName.FAMILY_NAME));jsonObject.put("firstName", firstName);String middleName =cursor.getString(cursor.getColumnIndex(StructuredName.MIDDLE_NAME));jsonObject.put("middleName", middleName);String lastname =cursor.getString(cursor.getColumnIndex(StructuredName.GIVEN_NAME));jsonObject.put("lastname", lastname);String suffix = cursor.getString(cursor.getColumnIndex(StructuredName.SUFFIX));jsonObject.put("suffix", suffix);String phoneticFirstName =cursor.getString(cursor.getColumnIndex(StructuredName.PHONETIC_FAMILY_NAME)); jsonObject.put("phoneticFirstName", phoneticFirstName);String phoneticMiddleName =cursor.getString(cursor.getColumnIndex(StructuredName.PHONETIC_MIDDLE_NAME)); jsonObject.put("phoneticMiddleName", phoneticMiddleName);String phoneticLastName =cursor.getString(cursor.getColumnIndex(StructuredName.PHONETIC_GIVEN_NAME)); jsonObject.put("phoneticLastName", phoneticLastName);}// 获取电话信息if (Phone.CONTENT_ITEM_TYPE.equals(mimetype)) {// 取出电话类型int phoneType = cursor.getInt(cursor.getColumnIndex(Phone.TYPE));// 手机if (phoneType == Phone.TYPE_MOBILE) {String mobile = cursor.getString(cursor.getColumnIndex(Phone.NUMBER));jsonObject.put("mobile", mobile);}// 住宅电话if (phoneType == Phone.TYPE_HOME) {String homeNum = cursor.getString(cursor.getColumnIndex(Phone.NUMBER));jsonObject.put("homeNum", homeNum);}// 单位电话if (phoneType == Phone.TYPE_WORK) {String jobNum = cursor.getString(cursor.getColumnIndex(Phone.NUMBER));jsonObject.put("jobNum", jobNum);}// 单位传真if (phoneType == Phone.TYPE_FAX_WORK) {String workFax = cursor.getString(cursor.getColumnIndex(Phone.NUMBER));jsonObject.put("workFax", workFax);}// 住宅传真if (phoneType == Phone.TYPE_FAX_HOME) {String homeFax = cursor.getString(cursor.getColumnIndex(Phone.NUMBER));jsonObject.put("homeFax", homeFax);}// 寻呼机if (phoneType == Phone.TYPE_PAGER) {String pager = cursor.getString(cursor.getColumnIndex(Phone.NUMBER));jsonObject.put("pager", pager);}// 回拨号码if (phoneType == Phone.TYPE_CALLBACK) {String quickNum = cursor.getString(cursor.getColumnIndex(Phone.NUMBER)); jsonObject.put("quickNum", quickNum);}// 公司总机if (phoneType == Phone.TYPE_COMPANY_MAIN) {String jobTel = cursor.getString(cursor.getColumnIndex(Phone.NUMBER));jsonObject.put("jobTel", jobTel);}// 车载电话if (phoneType == Phone.TYPE_CAR) {String carNum = cursor.getString(cursor.getColumnIndex(Phone.NUMBER));jsonObject.put("carNum", carNum);}// ISDNif (phoneType == Phone.TYPE_ISDN) {String isdn = cursor.getString(cursor.getColumnIndex(Phone.NUMBER));jsonObject.put("isdn", isdn);}// 总机if (phoneType == Phone.TYPE_MAIN) {String tel = cursor.getString(cursor.getColumnIndex(Phone.NUMBER));jsonObject.put("tel", tel);}// 无线装置if (phoneType == Phone.TYPE_RADIO) {String wirelessDev = cursor.getString(cursor.getColumnIndex(Phone.NUMBER));jsonObject.put("wirelessDev", wirelessDev);}// 电报if (phoneType == Phone.TYPE_TELEX) {String telegram = cursor.getString(cursor.getColumnIndex(Phone.NUMBER));jsonObject.put("telegram", telegram);}// TTY_TDDif (phoneType == Phone.TYPE_TTY_TDD) {String tty_tdd = cursor.getString(cursor.getColumnIndex(Phone.NUMBER));jsonObject.put("tty_tdd", tty_tdd);}// 单位手机if (phoneType == Phone.TYPE_WORK_MOBILE) {String jobMobile = cursor.getString(cursor.getColumnIndex(Phone.NUMBER));jsonObject.put("jobMobile", jobMobile);}// 单位寻呼机if (phoneType == Phone.TYPE_WORK_PAGER) {String jobPager = cursor.getString(cursor.getColumnIndex(Phone.NUMBER));jsonObject.put("jobPager", jobPager);}// 助理if (phoneType == Phone.TYPE_ASSISTANT) {String assistantNum = cursor.getString(cursor.getColumnIndex(Phone.NUMBER)); jsonObject.put("assistantNum", assistantNum);}// 彩信if (phoneType == Phone.TYPE_MMS) {String mms = cursor.getString(cursor.getColumnIndex(Phone.NUMBER));jsonObject.put("mms", mms);}}// }// 查找email地址if (Email.CONTENT_ITEM_TYPE.equals(mimetype)) {// 取出邮件类型int emailType = cursor.getInt(cursor.getColumnIndex(Email.TYPE));// 住宅邮件地址if (emailType == Email.TYPE_CUSTOM) {String homeEmail = cursor.getString(cursor.getColumnIndex(Email.DATA)); jsonObject.put("homeEmail", homeEmail);}// 住宅邮件地址else if (emailType == Email.TYPE_HOME) {String homeEmail = cursor.getString(cursor.getColumnIndex(Email.DATA)); jsonObject.put("homeEmail", homeEmail);}// 单位邮件地址if (emailType == Email.TYPE_CUSTOM) {String jobEmail = cursor.getString(cursor.getColumnIndex(Email.DATA));jsonObject.put("jobEmail", jobEmail);}// 单位邮件地址else if (emailType == Email.TYPE_WORK) {String jobEmail = cursor.getString(cursor.getColumnIndex(Email.DATA));jsonObject.put("jobEmail", jobEmail);}// 手机邮件地址if (emailType == Email.TYPE_CUSTOM) {String mobileEmail = cursor.getString(cursor.getColumnIndex(Email.DATA)); jsonObject.put("mobileEmail", mobileEmail);}// 手机邮件地址else if (emailType == Email.TYPE_MOBILE) {String mobileEmail = cursor.getString(cursor.getColumnIndex(Email.DATA));jsonObject.put("mobileEmail", mobileEmail);}}// 查找event地址if (Event.CONTENT_ITEM_TYPE.equals(mimetype)) {// 取出时间类型int eventType = cursor.getInt(cursor.getColumnIndex(Event.TYPE));// 生日if (eventType == Event.TYPE_BIRTHDAY) {String birthday = cursor.getString(cursor.getColumnIndex(Event.START_DATE));jsonObject.put("birthday", birthday);}// 周年纪念日if (eventType == Event.TYPE_ANNIVERSARY) {String anniversary = cursor.getString(cursor.getColumnIndex(Event.START_DATE)); jsonObject.put("anniversary", anniversary);}}// 即时消息if (Im.CONTENT_ITEM_TYPE.equals(mimetype)) {// 取出即时消息类型int protocal = cursor.getInt(cursor.getColumnIndex(Im.PROTOCOL));if (Im.TYPE_CUSTOM == protocal) {String workMsg = cursor.getString(cursor.getColumnIndex(Im.DATA));jsonObject.put("workMsg", workMsg);}else if (Im.PROTOCOL_MSN == protocal) {String workMsg = cursor.getString(cursor.getColumnIndex(Im.DATA));jsonObject.put("workMsg", workMsg);}if (Im.PROTOCOL_QQ == protocal) {String instantsMsg = cursor.getString(cursor.getColumnIndex(Im.DATA));jsonObject.put("instantsMsg", instantsMsg);}}// 获取备注信息if (Note.CONTENT_ITEM_TYPE.equals(mimetype)) {String remark = cursor.getString(cursor.getColumnIndex(Note.NOTE));jsonObject.put("remark", remark);}// 获取昵称信息if (Nickname.CONTENT_ITEM_TYPE.equals(mimetype)) {String nickName = cursor.getString(cursor.getColumnIndex());jsonObject.put("nickName", nickName);}// 获取组织信息if (Organization.CONTENT_ITEM_TYPE.equals(mimetype)) {// 取出组织类型int orgType = cursor.getInt(cursor.getColumnIndex(Organization.TYPE));// 单位if (orgType == Organization.TYPE_CUSTOM) {// if (orgType == Organization.TYPE_WORK) {String company = cursor.getString(cursor.getColumnIndex(PANY)); jsonObject.put("company", company);String jobTitle = cursor.getString(cursor.getColumnIndex(Organization.TITLE));jsonObject.put("jobTitle", jobTitle);String department =cursor.getString(cursor.getColumnIndex(Organization.DEPARTMENT));jsonObject.put("department", department);}}// 获取网站信息if (Website.CONTENT_ITEM_TYPE.equals(mimetype)) {// 取出组织类型int webType = cursor.getInt(cursor.getColumnIndex(Website.TYPE));// 主页if (webType == Website.TYPE_CUSTOM) {String home = cursor.getString(cursor.getColumnIndex(Website.URL));jsonObject.put("home", home);}// 主页else if (webType == Website.TYPE_HOME) {String home = cursor.getString(cursor.getColumnIndex(Website.URL));jsonObject.put("home", home);}// 个人主页if (webType == Website.TYPE_HOMEPAGE) {String homePage = cursor.getString(cursor.getColumnIndex(Website.URL));jsonObject.put("homePage", homePage);}// 工作主页if (webType == Website.TYPE_WORK) {String workPage = cursor.getString(cursor.getColumnIndex(Website.URL));jsonObject.put("workPage", workPage);}}// 查找通讯地址if (StructuredPostal.CONTENT_ITEM_TYPE.equals(mimetype)) {// 取出邮件类型int postalType = cursor.getInt(cursor.getColumnIndex(StructuredPostal.TYPE));// 单位通讯地址if (postalType == StructuredPostal.TYPE_WORK) {String street = cursor.getString(cursor.getColumnIndex(StructuredPostal.STREET)); jsonObject.put("street", street);String ciry = cursor.getString(cursor.getColumnIndex(StructuredPostal.CITY));jsonObject.put("ciry", ciry);String box = cursor.getString(cursor.getColumnIndex(StructuredPostal.POBOX));jsonObject.put("box", box);String area =cursor.getString(cursor.getColumnIndex(StructuredPostal.NEIGHBORHOOD));jsonObject.put("area", area);String state = cursor.getString(cursor.getColumnIndex(StructuredPostal.REGION));jsonObject.put("state", state);String zip = cursor.getString(cursor.getColumnIndex(StructuredPostal.POSTCODE)); jsonObject.put("zip", zip);String country =cursor.getString(cursor.getColumnIndex(StructuredPostal.COUNTRY));jsonObject.put("country", country);}// 住宅通讯地址if (postalType == StructuredPostal.TYPE_HOME) {String homeStreet =cursor.getString(cursor.getColumnIndex(StructuredPostal.STREET));jsonObject.put("homeStreet", homeStreet);String homeCity = cursor.getString(cursor.getColumnIndex(StructuredPostal.CITY));jsonObject.put("homeCity", homeCity);String homeBox = cursor.getString(cursor.getColumnIndex(StructuredPostal.POBOX)); jsonObject.put("homeBox", homeBox);String homeArea =cursor.getString(cursor.getColumnIndex(StructuredPostal.NEIGHBORHOOD));jsonObject.put("homeArea", homeArea);String homeState =cursor.getString(cursor.getColumnIndex(StructuredPostal.REGION));jsonObject.put("homeState", homeState);String homeZip =cursor.getString(cursor.getColumnIndex(StructuredPostal.POSTCODE));jsonObject.put("homeZip", homeZip);String homeCountry =cursor.getString(cursor.getColumnIndex(StructuredPostal.COUNTRY));jsonObject.put("homeCountry", homeCountry);}// 其他通讯地址if (postalType == StructuredPostal.TYPE_OTHER) {String otherStreet =cursor.getString(cursor.getColumnIndex(StructuredPostal.STREET));jsonObject.put("otherStreet", otherStreet);String otherCity = cursor.getString(cursor.getColumnIndex(StructuredPostal.CITY));jsonObject.put("otherCity", otherCity);String otherBox = cursor.getString(cursor.getColumnIndex(StructuredPostal.POBOX)); jsonObject.put("otherBox", otherBox);String otherArea =cursor.getString(cursor.getColumnIndex(StructuredPostal.NEIGHBORHOOD));jsonObject.put("otherArea", otherArea);String otherState =cursor.getString(cursor.getColumnIndex(StructuredPostal.REGION));jsonObject.put("otherState", otherState);String otherZip =cursor.getString(cursor.getColumnIndex(StructuredPostal.POSTCODE));jsonObject.put("otherZip", otherZip);String otherCountry =cursor.getString(cursor.getColumnIndex(StructuredPostal.COUNTRY));jsonObject.put("otherCountry", otherCountry);}}}cursor.close();Log.i("contactData", contactData.toString());return contactData.toString();}}。