gpt4 book ai didi

ios - UISearchBar 输入字符串转义 unicode 字符

转载 作者:行者123 更新时间:2023-11-29 10:54:23 34 4
gpt4 key购买 nike

我有一个搜索栏,用户可以输入英文、中文或拼音。 UISearchBar 将字符串返回为 NSString。我需要对字符串进行的操作是将其转换为 UTF-8 unicode 字符,但仅限于中文和拼音中使用的字符。

这里有几个场景。我在打字时编造的 unicode,所以它不正确,但我只是用它作为例子,结果很重要。

   SEARCH INPUT   |      NSString should look like              
+-----------------+-------------------------------------------+
| hello world | hello world |
+-----------------+-------------------------------------------+
| Nǐ zěnme yàng | N\u3435 z\u2343nme y\u1111ng |
+-----------------+-------------------------------------------+
| 你怎么样 | \u3435\u9995\u3885\u3445 |
+-----------------+-------------------------------------------+

我已经用 JavaScript 和 PHP 成功地做到了这一点,但 Objective-C 对我来说是一个新领域。

最佳答案

NSData *dataString = [@"你怎么样" dataUsingEncoding:NSNonLossyASCIIStringEncoding allowLossyConversion:NO];
NSString *cleanedString = [[NSString alloc] initWithData:dataString encoding:NSASCIIStringEncoding];

结果:\u4f60\u600e\u4e48\u6837

+ (NSString*) escapeUnicodeString:(NSString*)string
{
NSString* escapedString = [string stringByReplacingOccurrencesOfString:@"\\" withString:@"\\\\"];
escapedString = [escapedString stringByReplacingOccurrencesOfString:@"\"" withString:@"\\\""];
NSData* data = [escapedString dataUsingEncoding:NSUTF16LittleEndianStringEncoding allowLossyConversion:YES];
size_t bytesRead = 0;
const char* bytes = data.bytes;
NSMutableString* encodedString = [NSMutableString string];
while (bytesRead < data.length)
{
uint16_t code = *((uint16_t*) &bytes[bytesRead]);
if (code > 0x007E)
{
[encodedString appendFormat:@"\\u%04X", code];
}
else
{
[encodedString appendFormat:@"%C", code];
}
bytesRead += sizeof(uint16_t);
}
return encodedString;
}

结果:\u4F60\u600E\u4E48\u6837

Source

关于ios - UISearchBar 输入字符串转义 unicode 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19071168/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com