【问题标题】:how to use stringByTrimmingCharactersInSet in NSString如何在 NSString 中使用 stringByTrimmingCharactersInSet
【发布时间】:2013-01-04 11:02:56
【问题描述】:

我有一个给出日期的字符串(如下)

NSString*str1=[objDict objectForKey:@"date"];

 NSLog(@" str values2%@",str1); --> 04-Jan-13

现在的问题是我需要从这里修剪"-13"。我知道NSDateFormatter 来格式化日期。但我不能在这里这样做。我需要修剪它

为此我正在使用:-

 NSCharacterSet *charc=[NSCharacterSet characterSetWithCharactersInString:@"-13"];

 [str1 stringByTrimmingCharactersInSet:charc];  

但这不起作用。这不修剪...如何做到这一点..帮助

【问题讨论】:

    标签: iphone ios nsstring nscharacterset


    【解决方案1】:

    不知道为什么不使用 NSDateFormatter,但这里有一个非常具体的方法来解决这个问题(我认为非常糟糕的编码习惯):

    NSString *theDate = str1;
    NSArray *components = [theDate componentsSeparatedByString:@"-"];
    NSString *trimmedDate = [NSString stringWithFormat:@"%@-%@",[components objectAtIndex:0],[components objectAtIndex:1]];
    

    【讨论】:

    • 谢谢你!这给了我正确的一个。没有得到逻辑...stringWithFormat:@"%@-%@"
    【解决方案2】:

    但这不起作用。这不修剪...

    它会修剪,但由于NSString不可变的,修剪后的字符串会被丢弃,因为你没有将它分配给任何东西。

    这会起作用(但不要那样做!)

    str1 = [str1 stringByTrimmingCharactersInSet:charc];
    

    您所做的不是修剪,而是采用子字符串。 NSString 提供了一个更好的方法:

    str1 = [str1 substringToIndex:6]; // Take the initial 6 characters
    

    【讨论】:

    • @Christien 不,它不 :( 至少,它不总是工作:试试13-jan-13 看看为什么。
    • @Christien 不,它不起作用,因为NSCharacterSet 中的字符顺序无关紧要。试试看 - 即使使用 31-jan-13 也无法使用。
    • 谢谢分享这个..谢谢..现在使用 substringToIndex
    • 还有一件事..我需要使用 Facebook 登录打开我的应用程序..我应该使用哪个..我尝试了 FBConnect 但它已过期..然后我尝试了 Facebook SDK 但它需要我到 safari 打开 .. 是不是 FBConnect 之类的东西??
    • @Christien 我认为您应该在一个单独的问题中提出这个问题,以引起了解 FB 的人的注意(我什至没有帐户)。
    【解决方案3】:

    类似这样的:

    NSString *trimmed = [textStr stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
    

    或者这个:

    NSString *trimmed = [textStr stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"-13"];
    

    【讨论】:

      【解决方案4】:

      你所做的是正确的。唯一的问题是stringByTrimmingCharactersInSet 返回NSString。所以你需要把这个值赋给NSString,比如

      str1 = [str1 stringByTrimmingCharactersInSet:charc];
      

      【讨论】:

        【解决方案5】:

        如果您确定您的字符串始终采用“NN-CCC-NN”的格式,您可以只修剪前 6 个字符:

        NSString* stringToTrim = @"04-Jan-13";
        NSString* trimmedString =  [stringToTrim substringToIndex:6];
        NSLog(@"trimmedString: %@", trimmedString); // -> trimmedString: 04-Jan
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-12-22
          • 1970-01-01
          • 2012-05-24
          • 1970-01-01
          相关资源
          最近更新 更多