首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >xml文件CDATA中的下标和上标。使用UILabel显示解析后的XML内容

xml文件CDATA中的下标和上标。使用UILabel显示解析后的XML内容
EN

Stack Overflow用户
提问于 2012-03-03 08:17:37
回答 3查看 1.2K关注 0票数 1

我需要在UILabel中显示下标和上标(只有阿拉伯数字)。数据取自XML文件。以下是XML文件的片段:

代码语言:javascript
代码运行次数:0
运行
复制
<text><![CDATA[Hello World X\u00B2 World Hello]]></text>

它应该显示X2 (2作为上标)。当我从NSXMLParser中读取字符串并将其显示在UILabel中时,它将其显示为X\u00B2。有没有关于如何让它工作的想法?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-03 09:12:03

我认为您可以这样做,假设CDATA内容已被读入NSString并传递给此函数:

代码语言:javascript
代码运行次数:0
运行
复制
-(NSString *)removeUnicodeEscapes:(NSString *)stringWithUnicodeEscapes {
    unichar codeValue;
    NSMutableString *result = [stringWithUnicodeEscapes mutableCopy];
    NSRange unicodeLocation = [result rangeOfString:@"\\u"];
    while (unicodeLocation.location != NSNotFound) {

        // Get the 4-character hex code
        NSRange charCodeRange = NSMakeRange(unicodeLocation.location + 2, 4);
        NSString *charCode = [result substringWithRange:charCodeRange];
        [[NSScanner scannerWithString:charCode] scanHexInt:&codeValue];

        // Convert it to an NSString and replace in original string
        NSString *unicodeChar = [NSString stringWithFormat:%C", codeValue];
        NSRange replacementRange = NSMakeRange(unicodeLocation.location, 6);
        [result replaceCharactersInRange:replacementRange withString:unicodeChar];

        unicodeLocation = [result rangeOfString:@"\\u"];
    }

    return result;
}

我还没有机会尝试一下,但我认为基本的方法是可行的

票数 2
EN

Stack Overflow用户

发布于 2012-03-03 08:22:02

\u00B2不是任何一种用于字符的XML编码。显然,您的数据源已经定义了自己的编码方案(坦率地说,这是非常愚蠢的,因为XML能够使用CDATA块之外的实体直接对其进行编码)。

在任何情况下,您都必须编写自己的解析器来处理\u####并将其转换为正确的字符。

票数 1
EN

Stack Overflow用户

发布于 2012-03-03 09:15:04

我问了我的同事这个问题,他给了我一个很好的简单的解决办法。我在这里描述它,以防其他人也被困在这里。

首先转到this link。它有一个包含所有下标和上标的列表。例如,在我的例子中,我点击了“上标0”。在下面的详细介绍"superscript 0“的超文本标记语言页面中,转到"Java Data”部分并复制"⁰“。您可以将其直接放在XML中,或者在obj-c中编写一个简单的正则表达式,将\u00B2替换为"⁰“。你会得到很好的X⁰。对您可能想要显示的任何其他上标或下标执行相同的操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9542159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档