我有一个很大的文本数组(text,存储为cell-array),我想在matlab中截断,比如5个字符。使用regexprep截断是非常有效的,但是现在,我希望在每个截断匹配的末尾添加一个'...' (而且只在那里)。
(如何)在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'}发布于 2021-05-11 21:28:16
注意,字符串12345...实际上有8个字符长。您不想犯将1234567截断为12345...的错误,因为截断的版本更长,因此不应该首先截断。
考虑到这一点的一个解决办法是:
regexprep(text,'^(.{5}).{3}.+','$1...')只有在超过8个字符的情况下才会截断,如果有,则显示前一个5和尾随省略号。
发布于 2021-05-11 20:54:58
你需要用
regexprep(text,'^(.{5}).+','$1...')见regex演示。
要点是,只有当字符串停留在五个字符(否则,您甚至不需要截断字符串)时,才需要触发替换。
注意,regexprep返回输入字符串,就像没有找到regex匹配一样,因此您不需要担心0到5个字符长的字符串。
详细信息
^ -字符串的开始(.{5}) -捕获组1 ($1):任意五个字符.+ -任何一个或多个字符,尽可能多。https://stackoverflow.com/questions/67493998
复制相似问题