再次是我。我刚才问了类似的问题,但这个问题有点复杂。我打算使用RegexKitLite做我需要做的事情,但我相信这可以完成它。我有一个NSString,其中包含一些带空格/空格的单词,我想要得到最后一个单词左边的字符串中的最后一个空格。示例字符串如下:
NSString *string = @"Here is an example string HELLO ";
正如您在上面的字符串中看到的那样,字符串的最后部分有一个空格/空格。我希望能够获得HELLO左侧的空格/空白并用我自己的文本/字符串替换它。我正在使用NSString的NSBackwardsSearch,但它不起作用。
NSString *spaceReplacement = @"text that i want";
NSString *replaced = [snipet [string rangeOfString:substring options:NSBackwardsSearch].location:@" " withString:spaceReplacement];
NSLog(@"%@", replaced);
任何帮助都会有所帮助,我只是厌倦了试图解决这个问题,它让我疯狂。我想我可以用RegexKitLite做到这一点,但考虑到我正在使用的时间表,我的学习曲线对我来说太陡了。我很高兴Jacob R.让我使用NSString的方法: - )
答案 0 :(得分: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];
诀窍是使用[NSString rangeOfString:options:range:]
方法。
注意:如果字符串末尾并不总是包含空格,则此代码可能会失败,您需要的代码更复杂一些。如果是这种情况,请告诉我,我会更新答案。
免责声明:我没有测试过代码,但它应该编译并正常工作。
答案 1 :(得分:1)
这样的事情应该有效:
NSString *string = @"Here is an example string HELLO ";
if ([string hasSuffix:@" "]) {
NSString *spaceReplacement = @"text that i want";
NSString *replacedString = [[string substringToIndex:
[string length]] stringByAppendingString:spaceReplacement];
NSLog(@"replacedString == %@", replacedString);
}
答案 2 :(得分:0)
解决@Senseful note
如果字符串末尾始终不包含空格,则此代码可能会失败,您需要的代码更复杂一些。如果是这种情况,请告诉我,我会更新答案。
我在代码中添加了一行,以帮助解决这种情况并使代码更具通用性:
s = "value=sahi"
d = {k+1: v for k, v in enumerate(s.split("=")[1])}
>>> {1: 's', 2: 'a', 3: 'h', 4: 'i'}