Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >具有(‘)字符问题的过滤数组的NSPredicate

具有(‘)字符问题的过滤数组的NSPredicate
EN

Stack Overflow用户
提问于 2016-05-19 02:42:47
回答 4查看 1.3K关注 0票数 0

下面是我用字符串过滤数组的测试。如果我的字符串不包含(')字符,它工作得很好。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    NSMutableArray *array = [NSMutableArray arrayWithObjects:@"Nick", @"b'en", @"Adam", @"Melissa", @"arbind", nil];

    //NSPredicate *sPredicate = [NSPredicate predicateWithFormat:@"SELF contains[c] 'b'"]; -> it work
    NSPredicate *sPredicate = [NSPredicate predicateWithFormat:@"SELF contains[c] 'b''"]; -> it crash
    NSArray *beginWithB = [array filteredArrayUsingPredicate:sPredicate];
    NSLog(@"beginwithB = %@",beginWithB);

我也尝试将我的字符串更改为'b\'''b''',但它仍然崩溃。

这是崩溃日志

由于未命名的异常'NSInvalidArgumentException‘终止应用程序,原因:’无法解析格式字符串“自包含‘b’

如何解决这个问题?任何帮助都将不胜感激。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-05-19 02:54:32

请按以下方式筛选结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    NSMutableArray *array = [NSMutableArray arrayWithObjects:@"Nick", @"b'en", @"Adam", @"Melissa", @"arbind", nil];
        NSString *strToBeSearched = @"b'";

        //NSPredicate *sPredicate = [NSPredicate predicateWithFormat:@"SELF contains[c] 'b'"]; -> it work

        NSPredicate *sPredicate = [NSPredicate predicateWithFormat:@"SELF contains[c] %@",strToBeSearched]; //-> it also work

        //OR

        NSPredicate *sPredicate = [NSPredicate predicateWithFormat:@"SELF contains[c] 'b\\''"];


        NSArray *beginWithB = [array filteredArrayUsingPredicate:sPredicate];
        NSLog(@"containB = %@",beginWithB);
票数 2
EN

Stack Overflow用户

发布于 2016-05-19 02:52:32

尝尝这个

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
NSString *searchword = @"b";
NSPredicate *sPredicate = [NSPredicate predicateWithFormat:@"SELF contains[c] %@",searchword];

你得到的输出

票数 2
EN

Stack Overflow用户

发布于 2016-05-19 02:57:56

当你尝试反斜杠的时候,你离得很近。这是NSPredicate用来转义特殊字符的字符。但是,您需要两个反斜杠,而不是一个反斜杠:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
NSMutableArray *array = [NSMutableArray arrayWithObjects:@"Nick", @"b'en", @"Adam", @"Melissa", @"arbind", nil];
NSPredicate *sPredicate = [NSPredicate predicateWithFormat:@"SELF contains[c] 'b\\''"];
//                                                                              ^^
NSArray *beginWithB = [array filteredArrayUsingPredicate:sPredicate];
NSLog(@"beginwithB = %@",beginWithB);

你需要两个的原因是目标-C编译器。它处理代码中的所有字符串文字,并替换它遇到的转义序列。如果希望NSPredicate看到单个反斜杠,则字符串文本需要有两个反斜杠,因为反斜杠本身在Objective字符串文本中被编码为\\

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37320857

复制
相关文章
字符数组初始化问题解法_字符数组和字符串的区别
在C语言编程中,当我们声明一个字符串数组的时候,常常需要把它初始化为空串。总结起来有以下三种方式:
全栈程序员站长
2022/09/27
6030
字符数组反转_字符数组的初始化
关于字符串的反转,倒是很简单,但是编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。
全栈程序员站长
2022/08/18
1.1K0
iOS-谓词的使用详解import typedef NS_ENUM(NSInteger, PersonSex) {
✨建议收藏,用到时候一查就明白了 --xx_cc. 一、NSPredicate基本语句 只要我们使用谓词(NSPredicate)都需要为谓词定义谓词表达式,而这个表达式必须是一个返回BOOL的值。 谓词表达式由表达式、运算符和值构成。 1.比较运算符 比较运算符如下 =、==:判断两个表达式是否相等,在谓词中=和==是相同的意思都是判断,而不是赋值 NSNumber *testNumber = @123; NSPredicate *predicate = [NSPredicate predicateW
xx_Cc
2018/05/10
1.6K0
Objective-C 数组筛选
想项目有可能会遇到按照一定条件对某一个数组进行筛选。 直接遍历数组,取符合条件的对象放到一个新数组效率可能不高。
赵哥窟
2018/09/13
1.4K0
OC学习14——谓词
一、谓词的基本概念与使用 1、谓词(NSPredicate)用于定义一个逻辑条件,通过该条件可执行搜索或内存中的过滤操作。上一篇文章中介绍的集合都提供了使用谓词对集合进行过滤的方法。OC中的谓词操作是针对于数组类型的,他就好比数据库中的查询操作,数据源就是数组,这样的好处是我们不需要编写很多代码就可以去操作数组,同时也起到过滤的作用,我们可以编写简单的谓词语句,就可以从数组中过滤出我们想要的数据。非常方便。在Java中是没有这种技术的,但是有开源的框架已经实现了此功能。 2、创建谓词之后,如果谓词中没有占位
mukekeheart
2018/02/27
1.1K0
30分钟摸透iOS中谓词NSPredicate的来龙去脉
    在现代汉语的解释中,谓词是用来描述或判断客体性质、特征或者客体之间关系的词项。通俗的说,它是描述事物属性的。在iOS开发Cocoa框架中,有提供NSPredicate类,这个类通常也被成为谓词类,其主要的作用是在Cocoa中帮助查询和检索,但是需要注意,实质上谓词并不是提供查询和检索的支持,它是一种描述查询检索条件的方式,就像更加标准通用的正则表达式一样。
珲少
2018/08/15
1.5K0
去除字符数组中指定的字符
比较实用的小程序,备份记录。 //去除字符串中指定字符 static void Delete_Char(char str[],char target) {         uint8_t i,j;         for(i=j=0;str[i]!='\0';i++)         {             if(str[i]!=target)             {                 str[j++]=str[i];             }         }         s
Winter_world
2020/09/25
1.5K0
数组、字符串类问题小记
数组、字符串类的问题,是一类最为基础的问题,但是比较考察人,也经常出现在技术面中,今天想就这类问题,做个记录,好记心不如烂笔头。
Coder的技术之路
2021/05/14
5030
数组、字符串类问题小记
C++随记(一)---字符串数组的输入问题
本文讲述了一位程序员在C++编程中遇到的字符串数组输入问题,以及解决方案。主要包括两个部分:1. 使用getline()函数进行面向行的输入,需要注意缓冲区的长度和清除缓存区内的残留数据。2. 使用get()函数进行面向行的输入,需要注意正确读取输入中的换行符。
TeeyoHuang
2017/12/28
1.5K0
C++随记(一)---字符串数组的输入问题
java 字符数组 合并_字符数组合并?c数组合并?java数组合并问题「建议收藏」
String[] c = new String[a.length + b.length];
全栈程序员站长
2022/09/12
2.1K0
JS使用功能小记-数组的过滤
我们在写js的时候,最烦的就是处理数组一类的东西,其实数组说难不难,说简单吧,也挺简单的,我这里有这样一个需求,就是后端给到一个数组,其中一个有一个字段我是不需要的,我需要将不需要的字段过滤掉,我当时首先想到的是重绘数组,也就是克隆一个数组,克隆的过程中将不需要的字段不克隆,最后也实现了,但是反复想想怎么都感觉不合理,这样的写法是不是很傻*啊,所以有了今天的文章!
何处锦绣不灰堆
2020/05/29
2K0
JS使用功能小记-数组的过滤
数组过滤总结
第一种: var arr = [ {appid: '7e2702c3', status: 0}, {appid: 'ad02cfe0', status: 1}, {appid: '5a64af02', status: 2} ]; var newArr = arr .filter(item => item.status === 2) .map(item => item.appid); console.log(newArr);//[ '5a64af02' ] 第二种:
杭州前端工程师
2018/06/15
9600
iOS小技能:参数名ASCII码从小到大排序、对象数组排序
利用KVC的 valueForKeyPath API、谓词的NSPredicate、数组的sortedArrayUsingComparator:API进行实现。
公众号iOS逆向
2022/08/22
1.8K0
iOS小技能:参数名ASCII码从小到大排序、对象数组排序
python编写过滤指定字符的文本
#!/usr/bin/python #coding:utf-8 import os  import string import sys, getopt def Grep_start_char(Mpath, char):     if os.path.exists(Mpath):         GrepFile = file(Mpath)     else:         return "No such file or directory"     try:         for line in 
py3study
2020/01/10
7970
字符过滤下的攻击:双写绕过
1、软件系统常用的安全防御措施包括:字符过滤技术等。将可能带来安全隐患的,带有特定含义的字符串在接收客户端输入后立即清洗过滤,避免攻击脚本在服务器或者反射回客户端执行;
张树臣
2018/12/24
2.5K0
字符过滤下的攻击:双写绕过
字符过滤下的攻击:标签事件绕过
1、简单的字符过滤,可以通过双写绕过,但是稍微改写一下preg_replace()里的参数,就可以轻松让双写绕过变得不可能;
张树臣
2018/12/24
1.1K0
字符过滤下的攻击:标签事件绕过
【说站】js创建具有可变数量的数组
1、Array.of()方法创建一个具有可变数量参数的新数组实例,而不考虑参数的数量或类型。
很酷的站长
2022/11/24
3.1K0
【说站】js创建具有可变数量的数组
编码篇 - 正则表达式及其相关
有时我们需要在一大段长文本中过滤出我们需要的字段,或者检验该文本是否符合要求(该文本是否是邮箱,链接,电话号码或身份证),这时候就需要用到正则表达式了,当然我们也可以使用 NSPredicate,这不重要,重要的是表达式对于刷选和逻辑判断来说是十分方便的。
進无尽
2018/09/12
1K0
编码篇 - 正则表达式及其相关
C/CPP结构中的字符数组和字符指针
一般情况下我们在结构中都使用字符数组来存储字符串,是否可以使用指向char的指针来代替字符数组呢?
CtrlX
2022/10/04
1.5K0
点击加载更多

相似问题

使用NSPredicate过滤数组的数组

10

使用NSPredicate过滤数组

20

使用NSPredicate过滤数组

11

通过NSPredicate过滤数组的id数组

11

使用NSPredicate过滤数组的NSDictionary

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文