替换 NSString 中的特定单词

2023-12-25

获取和替换字符串中特定单词的最佳方法是什么? 例如我有

NSString * currentString = @"one {two}, thing {thing} good";

现在我需要找到每个{currentWord}

并为其应用函数

 [self replaceWord:currentWord]

然后用函数的结果替换 currentWord

-(NSString*)replaceWord:(NSString*)currentWord;

以下示例展示了如何使用NSRegularExpression and enumerateMatchesInString完成任务。我刚刚用过uppercaseString作为替换单词的函数,但您可以使用replaceWord方法还有:

EDIT:如果替换的单词是,我的答案的第一个版本无法正常工作 与原文一样短或长(感谢 Fabian Kreiser 注意到这一点!)。 现在它应该在所有情况下都能正常工作。

NSString *currentString = @"one {two}, thing {thing} good";

// Regular expression to find "word characters" enclosed by {...}:
NSRegularExpression *regex;
regex = [NSRegularExpression regularExpressionWithPattern:@"\\{(\\w+)\\}"
                                                  options:0
                                                    error:NULL];

NSMutableString *modifiedString = [currentString mutableCopy];
__block int offset = 0;
[regex enumerateMatchesInString:currentString
                        options:0
                          range:NSMakeRange(0, [currentString length])
                     usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) {
                         // range = location of the regex capture group "(\\w+)" in currentString:
                         NSRange range = [result rangeAtIndex:1];
                         // Adjust location for modifiedString:
                         range.location += offset;

                         // Get old word:
                         NSString *oldWord = [modifiedString substringWithRange:range];

                         // Compute new word:
                         // In your case, that would be
                         // NSString *newWord = [self replaceWord:oldWord];
                         NSString *newWord = [NSString stringWithFormat:@"--- %@ ---", [oldWord uppercaseString] ];

                         // Replace new word in modifiedString:
                         [modifiedString replaceCharactersInRange:range withString:newWord];
                         // Update offset:
                         offset += [newWord length] - [oldWord length];
                     }
 ];


NSLog(@"%@", modifiedString);

Output:



one {--- TWO ---}, thing {--- THING ---} good  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

替换 NSString 中的特定单词 的相关文章

  • 将 NSDecimalNumber 转换为 NSString

    我正在从如下所示的对象中检索密钥 po obj TypeID 3 TypeName Asset 键值的检索方式如下 NSString typeId NSString obj objectForKey TypeID typeId 不是 NSS
  • for 循环内存不足

    嘿 所以我认为如果我制作一个生成随机密码的小应用程序 然后让该应用程序运行所有可能性并尝试查看密码是什么 告诉我它尝试了多少次 那会很酷 有时应用程序可以工作 有时会崩溃 具体取决于密码是什么 我想知道是否可以采取任何措施来防止它因占用大量
  • UIButton 图像未更改/更新

    首先 我对 Objective C 还很陌生 并且仍在尝试尽可能多地学习 所以请耐心等待 现在我有一个以编程方式创建的 UIButton 按下按钮时 将显示一个 UIActionSheet 其中包含 相机 选择照片 或 取消 选项 然后 按
  • 编码的 nsdata utf8 json,在 ios 中带有重音字符

    我向网络服务器发出一个发布请求 该服务器用 JSON 回答我 这是响应的标头 Cache Control private Content Length 826 Content Type application json charset ut
  • 从视频创建缩略图 - 提高速度性能 - AVAsset - iPhone [重复]

    这个问题在这里已经有答案了 我正在使用基于以下线程中的代码的代码来生成视频缩略图 从 iPhone SDK 中的视频 URL 或数据获取缩略图 https stackoverflow com questions 1347562 gettin
  • UITableview 中的水平和垂直滚动[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 I want to make a lineup for a festival You can see what I want to a
  • 在 uilabel 中查找文本的位置 {x,y}

    我有一个来自服务器的字符串 我正在 UILabel multiligne 上显示它 在该字符串中 我正在识别一些特定的子字符串 我想在该子字符串上放置一个按钮 按钮将是 UILabel 的子视图 为此 我需要子字符串坐标 我经历过这个 但我
  • 从 UIImagePickerController 相机视图推送 viewController

    我正在开发一款消息应用程序 类似于 WhatsApp 用户可以互相发送文本和图像消息 当用户想要发送图像时 他可以从相机胶卷中选择一张图像 也可以用相机拍摄一张图像 这就是我介绍的方式UIImagePickerController对于这两种
  • NSString – 静态还是内联?有性能提升吗?

    如果我写的话会有任何性能提升吗 NSString helloStringWithName NSString name static NSString formatString Hello return NSString stringWith
  • iPhone 应用程序中的异步、同步、线程

    我正处于一个应用程序的设计阶段 该应用程序将利用 REST Web 服务 并且在使用异步 同步和线程方面遇到了困境 这是场景 假设您有三个选项可供深入研究 每个选项都有自己的基于 REST 的资源 我可以使用同步请求延迟加载每个请求 但这会
  • 使用 iPhone 中的地图视图读取当前位置名称

    我读取了当前位置的纬度和经度值 然后成功将该位置固定在 iPhone 中 现在我想使用这个纬度和经度值读取该地名 我使用以下代码来读取查找当前位置 void mapView MKMapView mapView1 didUpdateUserL
  • 在 OS X 上创建和使用静态库

    好的 我正在尝试创建一个 Cocoa 库 静态 并使用 但我不断收到错误 我创建了一个超基本的静态库 TSXLib 其中仅包含一个额外的类 import
  • 在 iOS 上将 NSString 转换为 NSDate 的正确方法?

    我一直在使用此方法将常规 NSString 对象转换为 NSDate 但尝试向 Apple 提交更新 但遭到拒绝 在 iOS 中还有什么其他方法可以做到这一点 NSString date str 2011 08 12T12 20 00Z N
  • 在 XCode 中链接静态 ObjC 库的过程

    我正在尝试链接到静态库 但不断收到链接器错误 我发现了一些发布示例的网站 但我无法看到我做错了什么 首先 我创建一个链接到我的库的项目 添加 gt 现有文件找到我的 xcodeproj 文件选择 将项目复制到目标组文件夹 选择我的宿主项目作
  • 在 Objective C 的类方法中引用类本身

    我希望我没有跳过 ObjC 手册中的这一部分 但是是否可以从类的一个类方法中引用该类 就像在 PHP 中一样 您将使用 this 来引用当前实例 而 self 引用实例的类 this 的 ObjC 等价物将是 self 那么 PHP 的 s
  • ios水平居中约束问题?

    I am having hard time in learning constraints auto layout in iOS I have used any width any height I have a storyboard sc
  • insertNewObjectForEntityForName:

    我使用 Xcode xcdatamodel 文件编辑器设置了一个实体 我创建了一个名为 Person 的实体 添加了一些属性 然后生成了一个 m 文件来表示它 一切都很好 现在 当我去编写一行代码时 例如 Person person Per
  • 从 robovm 项目创建 iOS 静态库(JNI 中的 BAD_ACCESS)

    我有大量的Java代码 只有计算函数 没有UI 我想在iOS中将其重用为静态库 我的方法是使用robovm http www robovm com并按照robovm论坛中两篇文章中描述的非官方方式创建静态库 1 基本方式 https gro
  • 在 iOS 应用程序中拨打电话

    我有一些代码尝试在应用程序中进行调用 但它似乎不起作用 UIApplication myApp UIApplication sharedApplication NSString theCall NSString stringWithForm
  • 如何删除 UITableView 中的缩进?

    首先 我对此很陌生 我很可能忘记了一些非常简单的事情 问题 我正在制作一个应用程序 在 a 中显示来自 imgur com 的随机图像tableView 由于某种原因 所有单元格都会缩进少量 如下图所示 我摆弄了许多设置storyboard

随机推荐

  • 当用户关闭 Chrome 时关闭 Native Host

    我正在开发一个使用 C 本机主机的 Chrome 扩展 在background js 脚本 持久设置为 false 中 我使用 chrome onstartup 事件创建与 C 主机的连接 我希望只要用户积极使用 Chrome 我的主机就能
  • 关闭QMainWindow的正确方法

    我最近从 tkinter 更改为 Pyqt5 因为我正在 Python 3 7 8 中开发一个半大型应用程序 每次我不得不关闭窗口时我都会使用该方法self destroy 并且有一个很小的机会 当我关闭所有程序并且没有窗口时 解释器仍在运
  • 如何设置可跨文本视图之间的边距?

    我正在尝试创建可扩展的文本视图并在 EditText 中显示它 因此 用户可以在 EditText 中输入一些内容 如果用户按下键盘的 Enter 按钮 那么我会将此文本转换为可跨文本视图 此用户可以再次开始输入并按键盘的 Enter 按钮
  • Lucene:从索引中删除,基于多个字段

    我需要从 lucene 搜索索引中删除文档 标准方法 indexReader deleteDocuments new Term field name field value 不会成功 我需要根据多个字段执行删除 我需要这样的东西 pseud
  • 如何仅向 NSDate 添加工作日?

    我有一个与 Objective C 中计算工作日相关的问题 我需要添加X给定的工作日NSDate 例如 如果我有一个约会 2010 年 10 月 22 日星期五 我添加2工作日 我应该得到 2010 年 10 月 26 日星期二 提前致谢
  • 如何在 Android 中从 ArrayList 填充的列表视图中选择多个项目

    我正在尝试编写一个程序来选择我填充的列表视图中的多个项目 但我很难选择多个项目 请让我知道该怎么做 下面是我填充数组列表的方式 并且我有一个带有复选框的自定义行 我需要在按钮单击事件上获取所选项目 名称 编号 先感谢您 我试图理解其他帖子
  • Laravel 子域路由不起作用

    我正在尝试拥有一个管理子域 像这样 https laravel com docs 5 1 routing route group sub domain routing Route group domain gt admin localhos
  • HikariCP 和 maxLifetime

    我将我的项目移至HikariCP https github com brettwooldridge HikariCP 到目前为止一切都很顺利 但在一种设置下我遇到了麻烦 这是 setMaxLifetime 30 1000 HikariCon
  • 使用资源中的几何图形的 WPF 自定义按钮

    有没有办法使用这样的 PathGeometry 集合 路径1 F1 中号 170 255 178 837L 170 255 221 158C 170 255 228 917 164 174 230 777 156 745 225 286L
  • 如何处理 AJAX 中的预期错误(包括向用户公开它们)

    预期错误是我在代码中预期甚至自己提出的来自服务器的错误 例如 当用户尝试执行他没有足够权限的操作时 我会提出PermissionError 一个习俗Exception 并带有描述错误的消息 我一直在寻找一种好方法来处理 AJAX 情况下的预
  • 如何以声明方式管理 Kafka 主题?

    我们正在使用 Apache Kafka 并且有很多手动创建的主题 使用自定义主题配置 我们希望像代码一样管理我们的主题 就像我们的基础设施 配置的其余部分一样 我们如何以编程方式和声明方式管理我们的主题 什么是理智的方法 以下是可能适合您正
  • Rails:PG :: UndefinedTable:错误:关系“...”不存在

    迁移时我收到以下错误消息 PG UndefinedTable ERROR relation actioncodes does not exist ALTER TABLE organizations ADD CONSTRAINT fk rai
  • 使用 Polars 生成运行记录,其中一个月的期末余额将成为下个月的期初余额

    我想在给定初始期初余额的情况下生成一段时间内的运行计数模拟 例如 一个虚构的企业从 1000 美元开始 在任何一个月内都会经历随机的盈利和亏损 12 个月后 这家企业可能会赚多少钱 我的问题是 我可以生成所需的列 但无法弄清楚如何在不破坏当
  • phpMyAdmin get_scripts.js.php 和 messages.php 很慢

    当我检查 127 0 0 1 phpmyadmin 上的网络活动时 我发现 get scripts js php 和 messages php 需要 7 到 16 秒才能执行 我打开这些脚本并添加了缓存时间 但问题仍然存在 header E
  • Pygame 声音延迟 - 与缓冲区/采样无关

    我试图在我的小游戏中播放简单的 wav 文件 每当用户将鼠标悬停在按钮上时 就会播放一点点击声音 实际按下按钮时也是如此 因此 我遇到了每个未正确初始化混音器的人都会遇到的普遍滞后问题 然而 当我正确初始化它时 它仍然有 0 5 秒的延迟
  • 使用 BLPOP 的 Redis 作业队列

    我尝试使用 redis 和 ruby eventmachine 创建无限作业队列 为了实现这一点 我使用了 0 超时的 redis BLPOP 命令 成功 BLPOP 后 我再次运行它 我的方法正确还是有更好的方法来使用 Redis 创建作
  • 什么时候 .the(success, failed) 被视为 Promise 的反模式?

    我看了一下蓝鸟承诺常见问题解答 https github com petkaantonov bluebird wiki Promise anti patterns 其中提到 then success fail 是一个反模式 https gi
  • VB.NET 的 LINQ 中 ORDERBY 的语法是什么?

    我是 Linq 新手 VB 中 order by 的语法是什么 Dim cxt As New datContext Dim qry From lst In cxt zipcodes Select lst state Distinct qry
  • 使用 ssl 从 Spring Boot 应用程序连接到 MongoDB

    我正在尝试使用 ssl 将我的 Spring Boot 应用程序连接到 mongodb 我按照此处描述的步骤进行操作 但它们对我不起作用 https www compose com articles how to connecting to
  • 替换 NSString 中的特定单词

    获取和替换字符串中特定单词的最佳方法是什么 例如我有 NSString currentString one two thing thing good 现在我需要找到每个 currentWord 并为其应用函数 self replaceWor