ios - 将长字符串插入到 UILabel 中,通过切割由\n 分隔的每个子字符串的尾部

标签 ios objective-c nsattributedstring core-text

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

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

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

enter image description here

我寻找的主要想法是如何将多行文本作为一个整体截断(不是按字符串分隔,截断每个文本然后再连接回去)。

更详细地说,我有 3 个字符串,用 \n 分隔并连接成一个长字符串。

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

  1. 第一个字符串必须有一行
  2. 第二个和第三个字符串必须最多有2行

所以我不仅想通过标签框架截断整个长字符串的尾部,而且还想截断由 \n 独立分隔的每个字符串的尾部。

我知道我可以动态地做到这一点:按单词拆分每个子字符串并连接单词,直到需要的行数超过最大允许行数。

但我相信有一些优雅的方法可以使用格式化或 CoreText 来做到这一点。

最佳答案

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

s/^(.{0,80}).*$/\1/g

例如,这个将从每个子串中只留下 80 个第一个符号。

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

而这个将留下不超过 80 个,但只在空白处中断

关于ios - 将长字符串插入到 UILabel 中,通过切割由\n 分隔的每个子字符串的尾部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24970901/

相关文章:

ios - 保存任何未保存的 PFObject 甚至用户终止应用程序

ios - 通读我的应用程序的核心数据文件(.sqlite、.sqlite-wal)

ios - Xcode iOS 生成 .png 文件并使用 NSFileManager 保存

objective-c - 使用关系从核心数据数据库中删除所有表记录

objective-c - 从 m4a 或 wav 解析标题?

macos - 在 NSAttributedString 的一部分周围绘制边框

iOS 键盘和 TextView 错误 - "use of undeclared variable"

ios - 将绝对 URL 更改为相对 URL 使用系统 API 快速而干净?

ios - 保留格式属性时NSAttributedString字体更改

android - Xamarin 属性字符串