搜索字符串,但允许不同但相似的标点字符

时间:2015-05-28 20:12:26

标签: ios objective-c regex nsstring string-comparison

我想在字符串中搜索子字符串,但允许使用不同但相似的标点字符(包括空格)。

例如,如果我有字符串

@"this is a 'difficult' string to search"

我搜索子字符串

@"a ‘difficult‘ string"

目前无法找到它,因为子字符串使用不同类型的单引号。

有没有一种搜索方式允许这样的轻微变化?或者我必须以自己的方式写作?如果我必须以自己的方式写作,我该怎么做呢?

显然,我想要涵盖许多其他可能性,有以下几种类型:

双引号(例如U + 0022,U + 201C,U + 201D)

单引号(U + 0027,U + 2018,U + 2019)

破折号(U + 002D,U + 2010,U + 2011,U + 2012,U + 2013,U + 2014,U + 2015(等))

空格(U + 0020,U + 00A0(等))

那我该怎么办呢

[myString rangeOfString:subString options:allowForSimilarPunctuation]

到目前为止,我一直在通过替换字符组合和重复搜索来改变字符串和子字符串,但这似乎是一种笨拙的方式,必须有一个聪明的方法来做到这一点?

1 个答案:

答案 0 :(得分:1)

您可以使用字符类:

@"a [‘']difficult[‘'] string"

这是Regex101上的一个例子,如果你想给它一个旋转: https://regex101.com/r/iZ6lQ8/1