通过剪切由\ n分隔的每个子字符串的尾部,将长字符串插入UILabel

时间:2014-07-26 12:13:51

标签: ios objective-c nsattributedstring core-text

我需要对我的长多行文字字符串进行智能多线剪切。

最初我有以下内容: enter image description here

在上面的屏幕上,我指出了我实际用来显示文字的狭窄区域。 最后,我想得到以下内容:

enter image description here

我寻找的主要思想是如何将多行文本整体截断(不是用字符串分隔,截断它们然后再连接)。

更详细地说,我有3个由\n分隔的字符串,并在一个长字符串中连接。

我希望在以下条件下将这个长字符串放在明确的UILabel中作为属性字符串:

  1. 第一个字符串必须有1行
  2. 第2和第3个字符串最多必须有2行
  3. 所以我想不仅截断标签框架的整个长字符串的尾部,而且每个字符串的尾部分别用\n分隔。

    我知道我可以动态地做到这一点:用单词分割每个子串并连接单词,直到需要更多然后最大允许行。

    但我相信使用格式化或CoreText有一些优雅的方法。

1 个答案:

答案 0 :(得分:0)

你可以使用一些优雅的正则表达式:)

s/^(.{0,80}).*$/\1/g
例如,这个只会从每个子字符串中留下80个第一个符号。

s/^(.{1,80})(?<!\s)(?!\w)/\1/g

这个不会超过80,但只能在空白处打破