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

Objective c 如何替换NSString中\xa0字符的出现,objective-c,cocoa-touch,cocoa,nsstring,Objective C,Cocoa Touch,Cocoa,Nsstring,我已经看过了,但没有解决办法。 问题就在这里 po [myNumberFormatter stringFromNumber:myNumber] 输出-->(id)$4=1.500,00 p (char) [(NSString *)[myNumberFormatter stringFromNumber:myNumber] characterAtIndex:1] 输出-->(字符)$5='\xa0' po [(NSString *)[myNumberFormatter stringFromNum

我已经看过了,但没有解决办法。 问题就在这里

po [myNumberFormatter stringFromNumber:myNumber]
输出-->(id)$4=1.500,00

p (char) [(NSString *)[myNumberFormatter stringFromNumber:myNumber] characterAtIndex:1]
输出-->(字符)$5='\xa0'

po [(NSString *)[myNumberFormatter stringFromNumber:myNumber] stringByReplacingOccurrencesOfString:@"\xa0" withString:@" "]
输出-->(id)$6=1.500,00

p (char) [(NSString *)[myNumberFormatter stringFromNumber:myNumber] characterAtIndex:1]
但是需要注意的是,在屏幕上,值1.500,00看起来像1500,00。 但是有没有办法将字符串中的“\xa0”字符转换为@”

下面的解决方案已经起作用了,但它存在将未包含的所有内容转换为空白字符的问题

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

我试过下面的答案,我认为这是错误的,因为

po [(NSString *)[numberFormatter stringFromNumber:theNumber] stringByReplacingOccurrencesOfString:@"\u00a0" withString:@" "] 
仍然产生相同的结果(仍然没有删除\xa0字符)。但是,当我没有将其放入调试器中,而是将其放入代码中的NSString中时,正确的答案被存储,并且\xa0字符被删除。我想我不应该只依赖调试器日志

NSString *str = // string to cleanup
str = [str stringByReplacingOccurrencesOfString:@"\u00a0" withString:@" "];
\u00a0将在编译时替换为实际的无中断空间

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

在我看来,替换“\u00a0”不是一个通用的解决方案,因为nect time server可能会发送任何其他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]];
 } 
} 
self.phoneNumber=[nsmutablestringwithcapacity:[[u storeDetails objectForKey“phone”]length]//哪个是000\U00a0950
NSCharacterSet*numberCharacterSet=[NSCharacterSet decimalDigitCharacterSet];
对于(int i=0;i<[[u storeDetails objectForKey“phone”]长度];i++)
{ 
unichar characterOfPhoneNumber=[[u存储对象forkey“phone”]字符索引:i];
if([numberCharacterSet-CharacterMember:characterOfPhoneNumber])
{[self.phoneNumber appendString:[NSString stringWithFormat“%c”,characterOfPhoneNumber]];
} 
} 
//在上面的代码中,我解析了每个字符,并检查它是否是一个数字,然后将其添加到数组中,因此该数组不使用unicode。 PS:\U00a0是一个字符

在我看来,替换“\U00a0”不是一个通用的解决方案,因为nect time server可能会发送任何其他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]];
 } 
} 
self.phoneNumber=[nsmutablestringwithcapacity:[[u storeDetails objectForKey“phone”]length]//哪个是000\U00a0950
NSCharacterSet*numberCharacterSet=[NSCharacterSet decimalDigitCharacterSet];
对于(int i=0;i<[[u storeDetails objectForKey“phone”]长度];i++)
{ 
unichar characterOfPhoneNumber=[[u存储对象forkey“phone”]字符索引:i];
if([numberCharacterSet-CharacterMember:characterOfPhoneNumber])
{[self.phoneNumber appendString:[NSString stringWithFormat“%c”,characterOfPhoneNumber]];
} 
} 
//在上面的代码中,我解析了每个字符,并检查它是否是一个数字,然后将其添加到数组中,因此该数组不使用unicode。
PS:\U00a0是一个字符

我尝试过@“\U00a0”,但这不起作用。还有其他建议吗?如果需要的话,我可以向你展示整个代码。我用自己的代码来做,效果很好。您可以尝试在代码中用实际的非中断空格替换\u00a0。从编辑菜单中,选择特殊字符。转到00a0字符并插入到代码中。我已尝试@“\u00a0”,但这不起作用。还有其他建议吗?如果需要的话,我可以向你展示整个代码。我用自己的代码来做,效果很好。您可以尝试在代码中用实际的非中断空格替换\u00a0。从编辑菜单中,选择特殊字符。转到00a0字符并插入到代码中。Thanx!这真的很有帮助:)Thanx!这真的很有帮助:)