首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >matlab:截断大文本并追加“.”

matlab:截断大文本并追加“.”
EN

Stack Overflow用户
提问于 2021-05-11 20:36:14
回答 2查看 74关注 0票数 0

我有一个很大的文本数组(text,存储为cell-array),我想在matlab中截断,比如5个字符。使用regexprep截断是非常有效的,但是现在,我希望在每个截断匹配的末尾添加一个'...' (而且只在那里)。

(如何)在MATLAB的regexprep中实现这一点?

代码语言:javascript
复制
>> 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'}

它应改为:

代码语言:javascript
复制
ans =

  1×3 cell array

    {'12345...'}    {'1'}    {'12'}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-05-11 21:28:16

注意,字符串12345...实际上有8个字符长。您不想犯将1234567截断为12345...的错误,因为截断的版本更长,因此不应该首先截断。

考虑到这一点的一个解决办法是:

代码语言:javascript
复制
regexprep(text,'^(.{5}).{3}.+','$1...')

只有在超过8个字符的情况下才会截断,如果有,则显示前一个5和尾随省略号。

票数 1
EN

Stack Overflow用户

发布于 2021-05-11 20:54:58

你需要用

代码语言:javascript
复制
regexprep(text,'^(.{5}).+','$1...')

regex演示

要点是,只有当字符串停留在五个字符(否则,您甚至不需要截断字符串)时,才需要触发替换。

注意,regexprep返回输入字符串,就像没有找到regex匹配一样,因此您不需要担心0到5个字符长的字符串。

详细信息

  • ^ -字符串的开始
  • (.{5}) -捕获组1 ($1):任意五个字符
  • .+ -任何一个或多个字符,尽可能多。
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67493998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档