如何在NSString中替换\ xa0字符的出现

时间:2012-10-26 23:26:05

标签: objective-c cocoa-touch cocoa nsstring

我已经看过this question,但没有解决方案。 这是问题所在。

po [myNumberFormatter stringFromNumber:myNumber]

输出 - > (id)$ 4 = 1.500,00

p (char) [(NSString *)[myNumberFormatter stringFromNumber:myNumber] characterAtIndex:1]

输出 - > (char)$ 5 ='\ xa0'

po [(NSString *)[myNumberFormatter stringFromNumber:myNumber] stringByReplacingOccurrencesOfString:@"\xa0" withString:@" "]

输出 - > (id)$ 6 = 1.500,00

有一点需要注意的是,在屏幕上,值 1.500,00 看起来像 1 500,00 。 但有没有办法将'\ xa0'字符转换为字符串中的@“”?

以下解决方案已经有效,但它存在将未包含的所有内容转换为空白字符的问题。

po [(NSString *)[myNumberFormatter stringFromNumber:myNumber] stringByReplacingSequenceOfCharactersInSet:(NSCharacterSet *)[[NSCharacterSet characterSetWithCharactersInString:@"0123456789,."] invertedSet] with:@" "]

修改 --------------

我已经尝试了下面的答案,我认为这是错误的,因为

po [(NSString *)[numberFormatter stringFromNumber:theNumber] stringByReplacingOccurrencesOfString:@"\u00a0" withString:@" "] 

仍然产生相同的结果(\ xa0 char仍未删除)。但是当我没有将它放在调试器中,而是将其放在代码中的NSString中时,存储了正确的答案并删除了\ xa0字符。我猜我不应该单独依赖调试器日志。

2 个答案:

答案 0 :(得分:5)

NSString *str = // string to cleanup
str = [str stringByReplacingOccurrencesOfString:@"\u00a0" withString:@" "];

\ u00a0将在编译时被替换为实际的不间断空格。

答案 1 :(得分:1)

在我看来,替换“\ u00a0”不是通用解决方案,因为nect时间服务器可能会发送任何其他unicode字符,然后代码将无法处理。另外“\ u00a0”不是一个字符串,它是一个字符.PFB是我用来过滤掉服务器响应的数字的代码:

phoneNumber= "000 \U00a0950";

因为我只想在phoneNumber中写过数字,我写道:

self.phoneNumber = [NSMutableString stringWithCapacity:[[_storeDetails objectForKey "phone"] length]]; //which  is 000 \U00a0950

NSCharacterSet *numberCharacterSet = [NSCharacterSet decimalDigitCharacterSet]; 

 for (int i = 0; i < [[_storeDetails objectForKey "phone"] length]; i++)
 { 
 unichar characterOfPhoneNumber = [[_store objectForKey "phone"] characterAtIndex:i]; 
   if ([numberCharacterSet characterIsMember:characterOfPhoneNumber]) 
   { [self.phoneNumber appendString:[NSString stringWithFormat "%c",characterOfPhoneNumber]];
 } 
} 

//在上面的代码中我解析了每个字符并检查了它是否是一个数字,在数组中添加了该数组,因此该数组是unicode free。 PS:\ U00a0是一个字符