如何在一行中获取NSString的前40个字符

时间:2015-11-25 07:18:22

标签: ios objective-c nsstring nsmutablestring

我有一个NSString。我想尝试第一行的前40个字符。 截至目前,我已经做到了。

NSString *text = @"Somewhere, something incredible is waiting to be known";
text = [text substringToIndex:40];

NSLog(OUTPUT : %@, text); 
OUTPUT : Somewhere, something incredible is wait

字符串waiting未完成。我需要的实际输出是

REQ OUTPUT : Somewhere, something incredible is waiting

我需要前40个字符,但如果最后一个字不完整,则应该完成。 有人能告诉我怎么做吗? 提前谢谢。

2 个答案:

答案 0 :(得分:1)

检查最后一个单词是否不完整的逻辑。

  1. 获取第41个字符并检查它是否为空格。
  2. 如果是,则不做任何事。
  3. 否则,获取字符串中最后一个空格的位置(修剪后的字符串)并修剪父字符串直到该位置。
  4. 如果你可以扩展超过40个字符来完成你的字符串,那么你检查第40个字符后的第一个空格并修剪你的父字符串直到那个位置。

    希望你能将它转换成Obj-C

答案 1 :(得分:0)

代码

 NSString *text = @"Somewhere, something incredible is waiting to be known";
__block NSInteger targetIndex = text.length;
[text enumerateSubstringsInRange:NSMakeRange(0, text.length)
                           options:NSStringEnumerationByWords
                        usingBlock:
 ^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {
     NSInteger lastIndex = substringRange.location + substring.length;
     if (lastIndex > 40) {
         targetIndex = lastIndex;
         *stop = true;
     }
 }];
text = [text substringToIndex:targetIndex];
NSLog(@"%@",text);

日志

  

某处,令人难以置信的是等待