首页 > 解决方案 > matlab:截断大文本并附加'...'

问题描述

我有大量文本(text存储为cell-array),我想在 matlab 中截断,比如 5 个字符。截断 withregexprep非常有效,但是现在,我很想'...'在每个截断匹配的末尾附加 a (并且在此处)。

(如何)这可以在 MATLAB 中实现regexprep吗?

>> text = {'123456780','1','12'}; %<- small representative sample
>> regexprep(text,'(^.{0,5})(.*)','$1') %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'}

标签: regexmatlabregexp-replace

解决方案


你需要使用

regexprep(text,'^(.{5}).+','$1...')

请参阅正则表达式演示

要点是,仅当字符串超过五个字符时才需要触发替换(否则,您甚至不需要截断字符串)。

请注意,regexprep如果没有找到正则表达式匹配,则按原样返回输入字符串,因此您无需担心长度为 0 到 5 个字符的字符串。

详情

  • ^- 字符串的开始
  • (.{5})- 捕获组 1 ( $1):任意五个字符
  • .+- 任何一个或多个字符,尽可能多。

推荐阅读