【问题标题】:Position of a character in a NSString or NSMutableStringNSString 或 NSMutableString 中字符的位置
【发布时间】:2011-01-23 17:06:33
【问题描述】:

我已经搜索了几个小时,但没有找到解决我的问题的方法。我有一个如下所示的 NSString:

"spacer": ["value1", "value2"], "spacer": ["value1", "value2"], ...

我想要做的是从字符串中删除 [ ] 字符。使用objective-c似乎是不可能的。大多数其他编程语言都提供诸如 strpos 或 indexOf 之类的函数,它们允许我搜索字符或字符串并定位它的位置。但是在objective-c中似乎没有这样的东西。

有人知道如何删除这些字符吗? 此外,字符串中还有 [] 字符应该保留,所以我不能只使用 NSMutableString stringByReplacingOccurencesOfString:withString。我需要先搜索间隔字符串,然后只删除接下来的两个 [] 字符。

谢谢你帮助我。

【问题讨论】:

    标签: objective-c nsstring replace nsmutablestring


    【解决方案1】:

    要查找字符串中出现的字符串,请使用 NSString 类中的 rangeOfXXX 方法。然后可以构造 NSRange 来提取子串等。

    此示例仅删除示例字符串中的第一组开/关括号...

    NSString *original = @"\"spacer\": \[\"value1\", \"value2\"], \"spacer\": \[\"value1\", \"value2\"]";
    NSLog(@"%@", original);
    
    NSRange startRange = [original rangeOfString:@"\["];
    NSRange endRange = [original rangeOfString:@"]"];
    
    NSRange searchRange = NSMakeRange(0, endRange.location);
    NSString *noBrackets = [original stringByReplacingOccurrencesOfString:@"\[" withString:@"" options:0 range:searchRange];
    noBrackets = [noBrackets stringByReplacingOccurrencesOfString:@"]" withString:@"" options:0 range:searchRange];
    NSLog(@"{%@}", noBrackets);
    

    String Programming Guide 有更多详细信息。
    您也可以使用 NSScanner 类。

    【讨论】:

      【解决方案2】:

      这对我来说可以将所有内容提取到字符的索引中,在本例中为 '[':

      NSString *original = @"\"spacer\": \[\"value1\", \"value2\"], \"spacer\": \[\"value1\", \"value2\"]";
      NSRange range = [original rangeOfString:@"\["];
      NSString *toBracket = [NSString stringWithString :[original substringToIndex:range.location] ];
      NSLog(@"toBracket: %@", toBracket);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多