首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何使用带有键和代码值的字典对NSString中的单词进行解码?

如何使用带有键和代码值的字典对NSString中的单词进行解码?
EN

Stack Overflow用户
提问于 2014-11-09 14:31:19
回答 3查看 133关注 0票数 1

我有用特殊快捷键编码的文本报告(例如,“BLU”表示“BLUE”,@"ABV“表示”以上“,等等)。

我创建了一个NSDictionary,其中键是编码的单词,值是翻译。

目前,我使用以下代码翻译字符串:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    NSMutableString *decodedDesc = [@"" mutableCopy];
    for (NSString *word in [self.rawDescriprion componentsSeparatedByString:@" "]) {
            NSString * decodedWord;
            if (word && word.length>0 && [word characterAtIndex:word.length-1] == '.') {
                decodedWord = [abbreviations[[word substringToIndex:word.length-1]] stringByAppendingString:@"."];
            } else
                decodedWord = abbreviations[word];
            if (!decodedWord)
                decodedWord = word;
            [decodedDesc appendString:[NSString stringWithFormat:@"%@ ",decodedWord]];
        }
        _decodedDescription = [decodedDesc copy];

问题是,报告中的词语并非总是用空格分隔开来。有时,代码会连接到其他特殊字符,如@"-“或”@“/,因为”BLU-ABV“这样的词不在字典键中。

如何改进这段代码,使其在翻译单词时忽略特殊字符,但在翻译后的NSString中保留它们?例如,@"BLU-ABV“将翻译为”Blue-Above“。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-11-09 18:30:15

我解决了。解决方案是逐个字母地枚举原始NSString。每个字母都被添加到一个单词中,直到达到一个特殊的字符。

在到达一个特殊字符时,翻译后的单词(然后是特殊字符)被转储到已翻译的报告(这是一个NSMutableString)中,并且单词变量被重置为@"“。

下面是代码:(不包括字典或原始NSString初始化)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
__block NSString *word;
    NSCharacterSet *specialChars = [[NSCharacterSet alphanumericCharacterSet] invertedSet];

    [_rawDescriprion enumerateSubstringsInRange:NSMakeRange(0, [_rawDescriprion length])
                                options:(NSStringEnumerationByComposedCharacterSequences)
                             usingBlock:^(NSString *letter, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {
                                 if (!word)
                                     word = @"";
                                 //if letter is a special char
                                 if ([letter rangeOfCharacterFromSet:specialChars].location != NSNotFound) {
                                     //add old word to decoded string
                                     if (word && abbreviations[word])
                                         [decodedDesc appendString:abbreviations[word]];
                                     else if (word)
                                         [decodedDesc appendString:word];

                                     //Add the punctuation character to the decoded description
                                     [decodedDesc appendString:letter];
                                     //Clear word variable
                                     word = @"";
                                 }
                                 else { //Alpha-numeric letter
                                     //add letter to word
                                     word = [word stringByAppendingString:letter];
                                 }
                             }];
    //add the last word to the decoded string
    if (word && abbreviations[word])
        [decodedDesc appendString:abbreviations[word]];
    else if (word)
        [decodedDesc appendString:word];

    _decodedDescription = [decodedDesc copy];
票数 0
EN

Stack Overflow用户

发布于 2014-11-09 15:01:04

这可以通过

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
NSCharacterSet *characterSet = [NSCharacterSet characterSetWithCharactersInString:@" -/"];
[self.rawDescription componentsSeparatedByCharactersInSet:characterSet];

其中characterSet包含您想要分隔的字符,或者您甚至可以用字母(只有字母或字母数字)来定义CharacterSet,然后使用invertedSet

票数 0
EN

Stack Overflow用户

发布于 2014-11-09 15:07:01

使用字符集来分隔它。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
NSMutableCharacterSet* cSet = [NSMutableCharacterSet punctuationCharacterSet];
// add your own custom character
[cSet addCharactersInString:@" "];
NSArray *comps = [self.rawDescriprion componentsSeparatedByString:cSet];

您可以在苹果文档查看哪个字符集更适合您的情况。

但我会说它应该是标点符号。

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

https://stackoverflow.com/questions/26834087

复制
相关文章
iterm2(zsh)粘贴慢解决办法
# .zshrc pasteinit() { OLD_SELF_INSERT=${${(s.:.)widgets[self-insert]}[2,3]} zle -N self-insert
ACK
2022/05/10
7380
IE之页面加载慢.
场景 场景是大屏页面一张深色背景, 里面一些文本元素以及图表展示. 结果在IE下发现加载异常缓慢, 还有部分人员反馈页面卡死. 后台读写优化 默认处理图片逻辑是, ImageIO读取原图, 转成byt
用户1216491
2018/01/24
2.4K0
idea使用debug模式启动非常慢
后来发现,之前在调试代码时不注意给属性加了断点,去掉idea的Breakpoints里的java field watchpoints就不卡了,如下:
凯哥Java
2022/12/16
2.2K0
idea使用debug模式启动非常慢
ntpdate同步时间慢
随着时间的推移,计算机的时钟会倾向于漂移. 网络时间协议 (NTP) 是一种确保您的时钟保持准确的方法。当硬件设备不带电池和无RTC的时候,基本靠网络时间协议来进行同步时间
程序手艺人
2019/02/21
3.6K0
Xshell/Xftp连接Linux速度非常慢(已解决)
1、打开sshd服务的配置文件/etc/ssh/sshd_config,把UseDNS yes改为UseDNS no
Arebirth
2020/06/19
5.4K0
Android Studio导入项目非常慢的解决办法
问题     Android Studio目前已经更新到2.0 Preview 6了,作为Google大力推崇的开发工具,相对于Eclipse ADT有着不可比拟的优势。然而在实际使用时,依然有不少不爽的地方。Android Studio原生支持使用Gradle来构建项目本是个不错的想法,使用动态语言Groovy定义项目构建过程,避免了build.xml文件的繁琐定义。但是Gradle的二进制包体积较大,而且用户可能按照了不同的Gradle版本,构建时可能会出现各种问题。因此又提出了Gradle Wrapp
24K纯开源
2018/01/18
1.4K0
Android Studio导入项目非常慢的解决办法
WordPress后台加载慢的快速优化方法
WordPress后台加载慢,一般与WordPress程序加载海外资源有关,这里推荐安装一个简单易用的插件来进行优化。
超级小可爱
2023/02/20
8970
Ghost 解决 jsdelivr 资源加载慢的问题
用了很久的自建 Ghost 博客系统不知道从哪个版本开始,页面加载速度忽然变慢了很多。看了下加载的资源,发现多了很多走 jsdelivr cdn 的资源,加载速度竟然长达半分钟。。。
mythsman
2023/03/08
2.2K0
Ghost 解决 jsdelivr 资源加载慢的问题
WordPress后台加载慢的快速优化方法
WordPress后台加载慢,一般与WordPress程序加载海外资源有关,这里推荐安装一个简单易用的插件来进行优化。
用户7491502
2021/06/24
3.7K0
WordPress后台加载慢的快速优化方法
大表分页查询非常慢,怎么办?
在实际的软件系统开发过程中,随着使用的用户群体越来越多,表数据也会随着时间的推移,单表的数据量会越来越大。
Java极客技术
2022/12/04
1.5K0
大表分页查询非常慢,怎么办?
为什么我的Redis这么“慢”?
Redis 作为内存数据库,拥有非常高的性能,单个实例的 QPS 能够达到 10W 左右。
架构师修行之路
2020/08/20
3.7K0
【Android】再来一篇Fragment的懒加载(只加载一次哦)
2017-7-14更新: 目前有人使用后出现了诸如首次打开显示空白界面,但点击有反应;或来回切换又变空白界面的问题。这些问题我暂时还不知道该怎么解决,后期有时间时会具体去分析下问题该怎么解决。所以你如果要使用该代码,希望考虑一下,我自己的小应用目前是没碰到这些问题。
请叫我大苏
2018/05/17
1.6K0
我先入坑啦,等你哦!
1.完全基于内存,绝大部分请求是纯粹的内存操作,非常快速。数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1);
夕梦
2021/06/07
3640
我先入坑啦,等你哦!
为啥我的Python这么慢 (一)
在Python系列教程中,我们提到一个概念字符串是不可修改的。这一点可以通过id函数来判断确实是对的。但是这个概念会对我们写作程序有什么影响一直没有特别深的理解。 直到有一次,实验室一个朋友要读基因组数据,结果发现3 G的基因组读一晚上都没读完,就很诧异,看了下代码,这么写的。 基因组序列是GRCh38.fa,FASTA格式,序列行每行70个字符,共44,284,892行 (记住行数有多大),示例如下。 >chr1 NNNNN...(60个N)...NNNNN ACGTA...(60个Nt)...ACGTA
生信宝典
2018/02/05
6490
css加载慢导致加载瞬间白屏(dom比css加载快导致)
2,css样式压缩下,用sass编译一下,放在head顶部,head再用incloud包起来,放在文件夹;
kirin
2020/11/30
2.2K0
还原我的图床数据库,哦耶~
之前的服务器到期后,用了两年的服务器,里面的东西还是蛮多的。我的网站博客,图床,和一些搭建的其他网站。最后我虽然给所有的东西都迁移了,唯独这个图床没有成功迁移,打开网站地址,报错。
废江_小江
2022/09/05
3170
使用 JS 监听加载,避免谷歌广告拖慢网页的加载速度
如果我的网页上有多个广告单元,把该段引入 JS 的代码 放到 head 里 既可以达到一次载入 JS 所有 ins 都可以接到广告,或者还可以使用 JS 监听的方式加载。
Yangsh888
2022/03/28
2.1K0
100%解决github加载慢、github加速
.NET Core Community是一个基于并围绕着 .NET 技术栈展开组织和活动的非官方、非盈利性的民间开源社区,提供了很多优秀的 .NET 开源项目。
老九
2021/08/13
3.2K0
启用Windows防火墙后,FTP传输非常慢
我们有一个计划任务,该任务使用Windows命令行FTP程序在两个Windows服务器之间传输大文件(〜130 MB)。速度很慢(大约需要30分钟),有时会在传输完成之前终止。服务器是2003年(发送)和2008年(接收)。
镭速
2023/06/01
7790
点击加载更多

相似问题

展示主题哦-我-zsh

45

bash,zsh :声明[*] (哦,我的)

13

写自己的哦-我-zsh插件

13

哦,我的ZSH & Vim插入光标

12

哦-我的-zsh历史日期格式

124
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文