不能替换所有出现的引号 (")
can not replace all occurrences of quotation (")
我使用下面的代码将所有出现的引号 (") 替换为另一个字符串:
NSString *cluasesText = @"آخرین حقوق کارگر را بهعنوان \"حق سنوات\" به وی ";
cluasesText = [cluasesText
stringByReplacingOccurrencesOfString:@"\"" withString:@"*****"];
但代码只替换其中一个引号,不替换第二个。
我还检查了两个标志是同一个字符,但我想知道为什么它没有替换第二个。实际上 运行 代码后的结果是:
آخرین حقوق کارگر را بهعنوان "حق سنوات***** به وی
而我们预计:
آخرین حقوق کارگر را بهعنوان *****حق سنوات***** به وی
请问第二个没有替换是什么问题?
试试下面的代码来替换你想要的字符,
NSString *cluasesText = @"آخرین حقوق کارگر را بهعنوان \"حق سنوات\" به وی ";
NSCharacterSet *charsToBeReplace = [NSCharacterSet characterSetWithCharactersInString:@"/:.\""];
cluasesText = [[cluasesText componentsSeparatedByCharactersInSet: charsToBeReplace] componentsJoinedByString: @""];
希望对您有所帮助...
编辑和更新:
正如@Husein Behboodi Rad 所问,让我解释一下出了什么问题,
第一次出现转义字符,即阿拉伯语文本中的 \" 与第二个 \" 具有不同的 unicode 编号 \u005c\u0022 \u005c\u0022\u200c,如果您复制并粘贴第一个转义符字符即 \" 然后是第二个转义字符即 \" 在 char 到 unicode 转换器中它会显示不同的 unicode 因为它们都是不同的。
所以在你的第一行字符串替换中,
cluasesText = [cluasesText
stringByReplacingOccurrencesOfString:@"\"" withString:@"*****"];
您已输入普通英语双引号作为第一次出现的 \" 匹配项,stringByReplacingOccurrencesOfString 方法仅替换与精确字符串(具有相同的 Unicode)匹配的字符串。第二个双引号可以是 Left或者右双引号,
因此,如果您必须尝试一下,只需添加以下代码,
NSString *cluasesText = @"آخرین حقوق کارگر را بهعنوان \"حق سنوات\" به وی ";
cluasesText = [cluasesText
stringByReplacingOccurrencesOfString:@"\"" withString:@"*****"];
cluasesText = [cluasesText
stringByReplacingOccurrencesOfString:@"\"" withString:@"*****"];
你会得到
的输出
آخرین حقوق کارگر را بهعنوان *****حق سنوات***** به وی
那么问题是 characterSetWithCharactersInString 是怎么工作的,所以我不是字符集专家,但是恕我直言,characterSetWithCharactersInString 方法替换出现的字符串而不考虑字符的 unicode部分相同的字符串,而 stringByReplacingOccurrencesOfString withString 将字符串替换为完全匹配的 unicode 字符串。
这就是我现在可以向您解释的内容。
在\"í سنوات"\ 最后一个之间有一个 space,只需删除 space 然后尝试使用相同的代码即可。
var string : NSString = "آخرین حقوق کارگر را بهعنوان \"حق سنوات\" به وی"
print(string)
string = string.stringByReplacingOccurrencesOfString("\"", withString: "*****")
print(string)
输出是
آخرین حقوق کارگر را بهعنوان "حق سنوات" به وی
آخرین حقوق کارگر را بهعنوان *****حق سنوات***** به وی
试试下面的字符串,其中在 حق سنوات
.
之后删除了 space
复制以下代码并检查:
NSString *cluasesText = @"آخرین حقوق کارگر را بهعنوان \"حق سنوات\" به وی ";
cluasesText = [cluasesText
stringByReplacingOccurrencesOfString:@"\"" withString:@"*****"];
我使用下面的代码将所有出现的引号 (") 替换为另一个字符串:
NSString *cluasesText = @"آخرین حقوق کارگر را بهعنوان \"حق سنوات\" به وی ";
cluasesText = [cluasesText
stringByReplacingOccurrencesOfString:@"\"" withString:@"*****"];
但代码只替换其中一个引号,不替换第二个。
我还检查了两个标志是同一个字符,但我想知道为什么它没有替换第二个。实际上 运行 代码后的结果是:
آخرین حقوق کارگر را بهعنوان "حق سنوات***** به وی
而我们预计:
آخرین حقوق کارگر را بهعنوان *****حق سنوات***** به وی
请问第二个没有替换是什么问题?
试试下面的代码来替换你想要的字符,
NSString *cluasesText = @"آخرین حقوق کارگر را بهعنوان \"حق سنوات\" به وی ";
NSCharacterSet *charsToBeReplace = [NSCharacterSet characterSetWithCharactersInString:@"/:.\""];
cluasesText = [[cluasesText componentsSeparatedByCharactersInSet: charsToBeReplace] componentsJoinedByString: @""];
希望对您有所帮助...
编辑和更新:
正如@Husein Behboodi Rad 所问,让我解释一下出了什么问题,
第一次出现转义字符,即阿拉伯语文本中的 \" 与第二个 \" 具有不同的 unicode 编号 \u005c\u0022 \u005c\u0022\u200c,如果您复制并粘贴第一个转义符字符即 \" 然后是第二个转义字符即 \" 在 char 到 unicode 转换器中它会显示不同的 unicode 因为它们都是不同的。
所以在你的第一行字符串替换中,
cluasesText = [cluasesText
stringByReplacingOccurrencesOfString:@"\"" withString:@"*****"];
您已输入普通英语双引号作为第一次出现的 \" 匹配项,stringByReplacingOccurrencesOfString 方法仅替换与精确字符串(具有相同的 Unicode)匹配的字符串。第二个双引号可以是 Left或者右双引号,
因此,如果您必须尝试一下,只需添加以下代码,
NSString *cluasesText = @"آخرین حقوق کارگر را بهعنوان \"حق سنوات\" به وی ";
cluasesText = [cluasesText
stringByReplacingOccurrencesOfString:@"\"" withString:@"*****"];
cluasesText = [cluasesText
stringByReplacingOccurrencesOfString:@"\"" withString:@"*****"];
你会得到
的输出آخرین حقوق کارگر را بهعنوان *****حق سنوات***** به وی
那么问题是 characterSetWithCharactersInString 是怎么工作的,所以我不是字符集专家,但是恕我直言,characterSetWithCharactersInString 方法替换出现的字符串而不考虑字符的 unicode部分相同的字符串,而 stringByReplacingOccurrencesOfString withString 将字符串替换为完全匹配的 unicode 字符串。
这就是我现在可以向您解释的内容。
在\"í سنوات"\ 最后一个之间有一个 space,只需删除 space 然后尝试使用相同的代码即可。
var string : NSString = "آخرین حقوق کارگر را بهعنوان \"حق سنوات\" به وی"
print(string)
string = string.stringByReplacingOccurrencesOfString("\"", withString: "*****")
print(string)
输出是
آخرین حقوق کارگر را بهعنوان "حق سنوات" به وی
آخرین حقوق کارگر را بهعنوان *****حق سنوات***** به وی
试试下面的字符串,其中在 حق سنوات
.
复制以下代码并检查:
NSString *cluasesText = @"آخرین حقوق کارگر را بهعنوان \"حق سنوات\" به وی ";
cluasesText = [cluasesText
stringByReplacingOccurrencesOfString:@"\"" withString:@"*****"];