【发布时间】:2014-04-03 14:51:04
【问题描述】:
我有一个格式如下的字符串:Oy\U00e9\U00e9 Oy\U00e9
所以,我在某个论坛上找到了一些东西并试图对其进行调整。这是我使用的:
// To keep whiteSpaces safe
string = [string stringByReplacingOccurrencesOfString:@" " withString:@"@@**@@"];
NSMutableString* clean_string = [NSMutableString string];
NSScanner* scanner = [NSScanner scannerWithString:string];
NSString* buf = nil;
while (![scanner isAtEnd] ) {
//Plus de caractères à scanner
if (![scanner scanUpToString: @"\\u" intoString: &buf] ){
break;
}
NSLog(@"%@", buf);
[clean_string appendString: buf];
//Fin du scan
if ([scanner isAtEnd] ){
break;
}
[scanner setScanLocation: [scanner scanLocation] + 3];//skip the '\\u'
unsigned c = 0;
if ([scanner scanHexInt: &c]){
[clean_string appendFormat: @"%c", c];
}else{
[clean_string appendString: @"\\u"];//nm
}
}
self.cleanStringWithSpaces= [clean_string stringByReplacingOccurrencesOfString:@"@@**@@" withString:@" "];
return self.cleanStringWithSpaces;
问题是当我有一个后面有 2 个 \u00e9 的字符串时,该字符串被剪切了。
示例:
Oy\U00e9\U00e9 Oy\U00e9 Give ====> Oyé
而不是:Oyéé Oyé
也许我错过了什么......希望你能帮助我!
祝你有美好的一天!
【问题讨论】:
-
您是否确定您的字符串包含
\Uxxxx,而这不仅仅是您在日志/等中看到它的方式吗? -
是的,我是这样理解的。我确定,但是您知道一种无需日志即可知道它的方法吗?
-
@iPatel,并不是我真正想要的。
-
当您的输入字符串为大写“U”时,为什么您的代码会扫描小写“u”?
标签: ios objective-c nsstring nsscanner