如何获取NSString的前三个字符?


Answers:


263
 mystr=[mystr substringToIndex:3];

确保您的字符串至少有3声道。否则它将使应用程序崩溃。

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

链接1

链接2

苹果链接


21
注意:如果不检查长度以确保其长度为3个或更多字符,则可能会出现“范围或索引超出范围”错误
Ryan Bavetta 2012年

我很新,我搜索了这个问题以尝试回答自己的问题,但是这个答案会不会减去前3个字符吗?我使用相同的语法删除设置的字符数。我可能错了,但我至少应该问一下。

@RyanBavetta如果执行此操作的字符串是例如日期字符串,该字符串早先由您的代码生成,因此您确切知道它有多少个字符,该怎么办。那么,您当然不必费心使用if语句来检查它有多长时间,对吗?
Supertecnoboff 2015年

1
@GameLoading我已经在您的答案中添加了一些代码,以使新手不会崩溃。希望您不要介意:)
iYoung

只需使用mystr = [mystr substringToIndex:MIN(mystr.length,3)]以避免崩溃:-)
LaborEtArs

62

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

NSString *fullString = /* obtain from somewhere */;
NSString *prefix = nil;

if ([fullString length] >= 3)
    prefix = [fullString substringToIndex:3];
else
    prefix = fullString;

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


5
或者,包装一个@ try / @ catch块。尽管如此,这是一个更好的答案。
艾伦·泽伊诺2011年

2

正确的方法是:

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

NSString的substringToIndex按代码单位进行索引,表情符号采用两个代码单位。

确保自己检查索引。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.