【问题标题】:how to get first three characters of an NSString?如何获取 NSString 的前三个字符?
【发布时间】:2011-03-14 04:07:08
【问题描述】:

如何返回 NSString 的前三个字符?

【问题讨论】:

    标签: objective-c cocoa


    【解决方案1】:
     mystr=[mystr substringToIndex:3];
    

    确保你的字符串至少有 3 ch.. o.e.它会使应用程序崩溃。

    这里是检查 NSsting 操作的其他一些链接...

    Link1

    Link2

    Apple Link

    【讨论】:

    • 注意:如果您不检查长度以确保其长度为 3 个或更多字符,则可能出现“范围或索引超出范围”错误
    • 我很新,我搜索了这个问题试图回答我自己的问题,但是这个答案不会去掉前3个字符吗?我使用相同的语法来删除您设置的字符数。我可能错了,但我认为我至少应该问一下。
    • @RyanBavetta 如果您正在使用的字符串是例如您的代码之前创建的日期字符串,那么您确切地知道它有多少个字符。那么你肯定不需要用 if 语句来检查它有多长,对吧??
    • @GameLoading 我已在您的答案中添加了一些代码,以免初学者崩溃。希望你不介意:)
    • 只需使用 mystr = [mystr substringToIndex:MIN(mystr.length, 3)] 即可避免崩溃 :-)
    【解决方案2】:

    首先,您必须确保字符串至少包含 3 个字符:

    NSString *fullString = /* obtain from somewhere */;
    NSString *prefix = nil;
    
    if ([fullString length] >= 3)
        prefix = [fullString substringToIndex:3];
    else
        prefix = fullString;
    

    如果您提供的索引超出字符串末尾,substringToIndex: 将抛出异常。

    【讨论】:

    • 或者,包装在 @try/@catch 块中。尽管如此,这是一个比另一个更好的答案。
    【解决方案3】:

    正确的做法是:

    text = [text substringToIndex:NSMaxRange([text rangeOfComposedCharacterSequenceAtIndex:2])];
    

    NSString 的 substringToIndex 是按代码单元索引的,emoji 需要两个代码单元。

    确保自己检查索引。

    【讨论】:

      猜你喜欢
      • 2017-02-14
      • 1970-01-01
      • 2011-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-06
      • 2021-05-10
      相关资源
      最近更新 更多