如何进行向后搜索以找到第二个空格/空白并用另一个字符串替换它?

0SX*_*0SX 4 c regex iphone xcode objective-c

又是我.我刚才问了类似的问题,但这个问题有点复杂.我打算使用RegexKitLite做我需要做的事情,但我相信这可以完成它.我有一个NSString,其中包含一些带空格/空格的单词,我想要得到最后一个单词左边的字符串中的最后一个空格.示例字符串如下:

NSString *string = @"Here is an example string HELLO ";
Run Code Online (Sandbox Code Playgroud)

正如您在上面的字符串中看到的那样,在字符串的最末端有一个空格/空格.我希望能够获得HELLO左侧的空格/空白并用我自己的文本/字符串替换它.我正在使用NSString的NSBackwardsSearch,但它不起作用.

NSString *spaceReplacement = @"text that i want";
    NSString *replaced = [snipet [string rangeOfString:substring options:NSBackwardsSearch].location:@" " withString:spaceReplacement];
    NSLog(@"%@", replaced);
Run Code Online (Sandbox Code Playgroud)

任何帮助都会有所帮助,我只是厌倦了试图解决这个问题,它让我疯狂.我想我可以用RegexKitLite做到这一点,但考虑到我正在使用的时间框架,我的学习曲线太陡了.我很高兴Jacob R.让我使用NSString的方法:-)

Sen*_*ful 17

此解决方案假设您的字符串末尾始终有空格...它应该转换

这是一个示例字符串HELLO

... 至:

这是我想要的示例stringtext

......因为那是我理解你想做的事情.

这是代码:

NSString *string = @"Here is an example string HELLO ";

NSRange rangeToSearch = NSMakeRange(0, [string length] - 1); // get a range without the space character
NSRange rangeOfSecondToLastSpace = [string rangeOfString:@" " options:NSBackwardsSearch range:rangeToSearch];

NSString *spaceReplacement = @"text that i want";
NSString *result = [string stringByReplacingCharactersInRange:rangeOfSecondToLastSpace withString:spaceReplacement];
Run Code Online (Sandbox Code Playgroud)

诀窍是使用该[NSString rangeOfString:options:range:]方法.

注意:如果字符串末尾并不总是包含空格,则此代码可能会失败,您需要的代码更复杂一些.如果是这种情况,请告诉我,我会更新答案.

免责声明:我没有测试过代码,但它应该编译并且工作得很好.