【问题标题】:How to replace occurrence of \xa0 character in NSString如何替换 NSString 中出现的 \xa0 字符
【发布时间】:2012-10-26 23:26:04
【问题描述】:

我已经看过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 字符仍未删除)。但是当我没有把它放在调试器中,而是把它放在代码中的一个 NSString 中时,正确的答案被存储了,\xa0 字符被删除了。我想我不应该只依赖调试器日志。

【问题讨论】:

    标签: objective-c cocoa-touch cocoa nsstring


    【解决方案1】:
    NSString *str = // string to cleanup
    str = [str stringByReplacingOccurrencesOfString:@"\u00a0" withString:@" "];
    

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

    【讨论】:

    • 我试过@"\u00a0" 但这不起作用。还有其他建议吗?如果需要,我可以向您展示整个代码。
    • 我在自己的代码中执行此操作,它工作正常。您可以尝试将 \u00a0 替换为代码中的实际不间断空格。从编辑菜单中,选择特殊字符。转到 00a0 字符并插入到您的代码中。
    【解决方案2】:

    在我看来,替换“\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]];
     } 
    } 
    

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

    【讨论】:

    • 谢谢!它真的很有帮助:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多