matlab:截断大文本并附加“...”
matlab: truncate large text and append '...'
我有大量文本(text
,存储为 cell-array
),我想在 matlab 中将其截断,比如 5 个字符。用 regexprep
截断是非常有效的,但现在,我想在每个截断匹配的末尾附加一个 '...'
(并且 只有 )。
(如何)在 MATLAB 的 regexprep
中实现?
>> text = {'123456780','1','12'}; %<- small representative sample
>> regexprep(text,'(^.{0,5})(.*)','') %capture first 5 characters or less in first group (and replace the text with first group captures)
ans =
1×3 cell array
{'12345'} {'1'} {'12'}
它应该读作:
ans =
1×3 cell array
{'12345...'} {'1'} {'12'}
您需要使用
regexprep(text,'^(.{5}).+','...')
参见regex demo。
要点是,只有当字符串超过五个字符时才需要触发替换(否则,您甚至不需要截断字符串)。
请注意,regexprep
returns 如果未找到正则表达式匹配项,输入字符串将保持原样,因此您无需担心长度为零到五个字符的字符串。
详情:
^
- 字符串开头
(.{5})
- 捕获组 1 (</code>):任意五个字符</li>
<li><code>.+
- 任何一个或多个字符,尽可能多。
请注意,字符串 12345...
实际上是 8 个字符长。您不想犯将 1234567
截断为 12345...
的错误,因为截断后的版本更长,因此一开始就不应该截断。
考虑到这一点的解决方案是:
regexprep(text,'^(.{5}).{3}.+','...')
仅当超过 8 个字符时才会截断,如果超过 8 个字符,将显示前 5 个字符并带有尾随省略号。
我有大量文本(text
,存储为 cell-array
),我想在 matlab 中将其截断,比如 5 个字符。用 regexprep
截断是非常有效的,但现在,我想在每个截断匹配的末尾附加一个 '...'
(并且 只有 )。
(如何)在 MATLAB 的 regexprep
中实现?
>> text = {'123456780','1','12'}; %<- small representative sample
>> regexprep(text,'(^.{0,5})(.*)','') %capture first 5 characters or less in first group (and replace the text with first group captures)
ans =
1×3 cell array
{'12345'} {'1'} {'12'}
它应该读作:
ans =
1×3 cell array
{'12345...'} {'1'} {'12'}
您需要使用
regexprep(text,'^(.{5}).+','...')
参见regex demo。
要点是,只有当字符串超过五个字符时才需要触发替换(否则,您甚至不需要截断字符串)。
请注意,regexprep
returns 如果未找到正则表达式匹配项,输入字符串将保持原样,因此您无需担心长度为零到五个字符的字符串。
详情:
^
- 字符串开头(.{5})
- 捕获组 1 (</code>):任意五个字符</li> <li><code>.+
- 任何一个或多个字符,尽可能多。
请注意,字符串 12345...
实际上是 8 个字符长。您不想犯将 1234567
截断为 12345...
的错误,因为截断后的版本更长,因此一开始就不应该截断。
考虑到这一点的解决方案是:
regexprep(text,'^(.{5}).{3}.+','...')
仅当超过 8 个字符时才会截断,如果超过 8 个字符,将显示前 5 个字符并带有尾随省略号。