我使用下面的代码将所有出现的引号(“)替换为另一个字符串:
NSString *cluasesText = @"آخرین حقوق کارگر را بهعنوان \"حق سنوات\" به وی ";
cluasesText = [cluasesText
stringByReplacingOccurrencesOfString:@"\"" withString:@"*****"];
但代码只替换其中一个引用而不替换第二个。
我还检查了两个标志是相同的字符,但我想知道它为什么不替换第二个。实际上运行代码后的结果是:
آخرین حقوق کارگر را بهعنوان "حق سنوات***** به وی
虽然我们期待:
آخرین حقوق کارگر را بهعنوان *****حق سنوات***** به وی
我想知道第二个没有替换的问题是什么?
答案 0 :(得分:6)
尝试下面的代码来替换你想要的字符,
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)。第二个双引号可以是左或右双引号,
因此,如果你必须尝试一下,只需添加以下代码,
NSString *cluasesText = @"آخرین حقوق کارگر را بهعنوان \"حق سنوات\" به وی ";
cluasesText = [cluasesText
stringByReplacingOccurrencesOfString:@"\"" withString:@"*****"];
cluasesText = [cluasesText
stringByReplacingOccurrencesOfString:@"\"" withString:@"*****"];
您将获得输出
آخرین حقوق کارگر را بهعنوان *****حق سنوات***** به وی
所以现在 characterSetWithCharactersInString 如何工作是个问题,所以我不是字符集的专家但IMHO,characterSetWithCharactersInString方法替换出现字符串而不考虑部分相同的字符串的unicode而stringByReplacingOccurrencesOfString withString用完全匹配的unicode字符串替换字符串。
这就是我现在可以解释的内容。
答案 1 :(得分:2)
\“حقسنوات”\最后一个之间有一个空格,只需删除空格然后尝试相同的代码即可。
var string : NSString = "آخرین حقوق کارگر را بهعنوان \"حق سنوات\" به وی"
print(string)
string = string.stringByReplacingOccurrencesOfString("\"", withString: "*****")
print(string)
out put
آخرین حقوق کارگر را بهعنوان "حق سنوات" به وی
آخرین حقوق کارگر را بهعنوان *****حق سنوات***** به وی
答案 2 :(得分:0)
在حق سنوات
之后尝试删除空格的下面的字符串。
复制下面的代码并检查:
NSString *cluasesText = @"آخرین حقوق کارگر را بهعنوان \"حق سنوات\" به وی ";
cluasesText = [cluasesText
stringByReplacingOccurrencesOfString:@"\"" withString:@"*****"];