让我说我得到一个字符串" 123 4,56"从下面的代码(我现在有一个俄语本地的逗号作为默认分隔符而不是点),如何从中删除空间,实际上是一个非破坏空间和标准代码,如[str stringByReplacingOccurrencesOfString :@" " withString:@""];不会起作用:
NSString* amount = @"1234.56";
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_UK"]];
NSNumber *num = [formatter numberFromString:amount];
NSString* str = [NSString localizedStringWithFormat:@"%.2F", [num doubleValue]];
NSLog(@"Str Value: %@", str);
NSString *newStr = [str stringByReplacingOccurrencesOfString:@" " withString:@""];
NSLog(@"New Str Value: %@", newStr);
我得到的输出是:
Str Value: 1 234,56
New Str Value: 1 234,56
我试图解决的问题是我从服务器获取一个字符串(即123.45),我需要在UITextField中显示该字符串。问题是我不能只显示来自服务器的值,因为它取决于用户本地。如果用户有英国本地工作正常,但如果用户有俄语本地我需要显示逗号而不是点,因此基本上是上面的代码。然而,我得到的问题是,在将字符串从一个本地转换为另一个本地后,添加了一个令人讨厌的空间,我试图摆脱它。
基于Doro回答的解决方案
[str stringByReplacingOccurrencesOfString:@"\u00a0" withString:@""];
答案 0 :(得分:0)
第一行应该有效
<>
但是如果它没有,我还有另一种方式:
NSString* newStr = [str stringByReplacingOccurrencesOfString:@" " withString:@""];
<强>更新强>
不应手动使用区域设置,而应根据需要使用动态区域设置方法。
替换:NSString* newStr2 = [[str componentsSeparatedByString:@" "] componentsJoinedByString:@""];
人:
[formatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_UK"]];
答案 1 :(得分:0)
听起来很奇怪,你确定那是空白角色吗?
我可以使用扫描仪提供此片段来标记输入字符:
- (NSString*) stripInputValue: (NSString*) inputValue
{
NSMutableString *strippedString = [NSMutableString
stringWithCapacity:inputValue.length];
NSScanner *scanner = [NSScanner scannerWithString:inputValue];
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setLocale:[NSLocale currentLocale]];
NSString *decimalSymbol = [formatter decimalSeparator];
NSCharacterSet *validCharacters = [NSCharacterSet characterSetWithCharactersInString:[@"1234567890" stringByAppendingString:decimalSymbol]];
while ([scanner isAtEnd] == NO) {
NSString *buffer;
if ([scanner scanCharactersFromSet:validCharacters intoString:&buffer]) {
[strippedString appendString:buffer];
} else {
[scanner setScanLocation:([scanner scanLocation] + 1)];
}
}
return strippedString;
}
小心 - 如果你想支持多重语言环境 - 某些语言环境使用'。'作为分隔符,一些','。如果需要,您可以通过编程方式进行检查。
修改强>
另请注意,iOS不使用空格作为分隔符,而是使用localizedStringWithFormat:
的不间断空格(U + 00A0),这是您的问题。
希望这有帮助。