【问题标题】:How to get the first 40 characters of a NSString in a line如何在一行中获取 NSString 的前 40 个字符
【发布时间】:2015-11-25 07:18:22
【问题描述】:

我有一个 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 个字符,但如果最后一个单词不完整,则应该完成。 有人可以告诉我该怎么做吗? 提前致谢。

【问题讨论】:

  • 这是因为即使是空格也算作字符
  • 如何知道最后一个单词是否不完整?
  • 到目前为止您尝试过什么?可以发帖吗?

标签: ios objective-c nsstring nsmutablestring


【解决方案1】:

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

  1. 获取第 41 个字符并检查是否为空格。
  2. 如果是,则什么也不做。
  3. 否则,获取字符串中最后一个空格的位置(修剪字符串)并将父字符串修剪到该位置。

如果你可以扩展超过 40 个字符来完成你的字符串,那么你检查第 40 个字符之后的第一个空格并将你的父字符串修剪到那个位置。

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

【讨论】:

    【解决方案2】:

    代码

     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);
    

    日志

    某处,令人难以置信的事情正在等待

    【讨论】:

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