【问题标题】:How to selectively trim an NSMutableString?如何有选择地修剪 NSMutableString?
【发布时间】:2011-09-10 08:07:59
【问题描述】:

我想知道如何选择性地修剪 NSMutableString。例如,如果我的字符串是“MobileSafari_2011-09-10-155814_Jareds-iPhone.plist”,我将如何以编程方式删除除“MobileSafari”一词之外的所有内容?

注意:鉴于上面的programatically一词,我希望解决方案能够工作,即使“MobileSafari”这个词被更改为“Youtube”,或者这个词“Jared's-iPhone”更改为“Angela's-iPhone”。

非常感谢任何帮助!

【问题讨论】:

  • 在一般层面上,您希望修剪字符串的条件是什么?例如,您需要提取前 20 个字符,您想删除除前 20 个字符之外的所有内容,等等
  • 这个可能有点模糊,但是我想保留字符串的所有字符直到第一个下划线,并删除剩余的字符。

标签: iphone objective-c substring nsmutablestring


【解决方案1】:

鉴于您总是需要将字符提取到第一个下划线;使用以下方法;

NSArray *stringParts = [yourString componentsSeparatedByString:@"_"];

我认为数组中的第一个对象将是您需要的提取部分。

【讨论】:

    【解决方案2】:

    测试代码:100% 有效

    NSString *inputString=@"MobileSafari_2011-09-10-155814_Jareds-iPhone.plist";
    
    NSArray *array= [inputString componentsSeparatedByString:@"_"];
    
    if ([array count]>0) {
    
        NSString *resultedString=[array objectAtIndex:0];
    
    
        NSLog(@" resultedString IS - %@",resultedString);
    
    
    
    }
    

    输出:

    resultedString IS - MobileSafari
    

    【讨论】:

    • 接受的答案使用 NSString 而不是 NSMutableString,这有点奇怪。我正在寻找修剪 NSMutableString,但这个答案并没有真正回答这个问题。
    【解决方案3】:

    如果你知道字符串的格式总是这样,那就很容易了。

    只需使用 NSString 的 componentsSeparatedByString: 记录的 here

    在你的情况下,你可以这样做:

    NSString *source = @"MobileSafari_2011-09-10-155814_Jareds-iPhone.plist";
    
    NSArray *seperatedSubStrings = [source componentsSeparatedByString:@"_"];
    
    NSString *result = [seperatedSubStrings objectAtIndex:0];
    

    @"MobileSafari" 位于索引 0,@"2011-09-10-155814" 位于索引 1,@"Jareds-iPhone.plist" 位于索引 2。

    【讨论】:

      【解决方案4】:

      试试这个:

      NSString *strComplete = @"MobileSafari_2011-09-10-155814_Jareds-iPhone.plist";  
      NSArray *arr = [strComplete componentsSeparatedByString:@"_"];  
      NSString *str1 = [arr objectAtIndex:0];  
      NSString *str2 = [arr objectAtIndex:1];  
      NSString *str3 = [arr objectAtIndex:2]; 
      

      str1 是必需的字符串。
      即使您将 MobileSafari 更改为 youtube 也可以。

      【讨论】:

        【解决方案5】:

        所以你需要一个 NSString 变量来保存你想要截断的字符串的开头。之后,一种方法可能是同时更改字符串和变量字符串值。比如说,变量字符串是“Youtube”而不是更改为“MobileSafari”,那么可变字符串应该从“MobileSafari_.....”更改为“YouTube_......”。然后您可以获取可变字符串长度并使用以下代码截断可变字符串。

        NSString *beginningOfTheStr;
        .....
        theMutableStr=[theMutableStr substringToIndex:[beginningOfTheStrlength-1]]; 
        

        看看 tis 是否适合你。

        【讨论】:

          猜你喜欢
          • 2016-11-17
          • 2018-07-10
          • 2021-05-05
          • 1970-01-01
          • 2023-01-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多