首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Matlab:字符串解析

Matlab:字符串解析
EN

Stack Overflow用户
提问于 2015-10-12 08:12:38
回答 2查看 315关注 0票数 2

如何将像1-14这样的字符串转换为01_014?(将2-2转换为02_002)?

我可以这样做:

代码语言:javascript
复制
testpoint_number = '5-16';
temp = textscan(testpoint_number, '%s', 'delimiter', '-');
temp = temp{1};
first_part = temp{1};
second_part = temp{2};
output_prefix = strcat('0',first_part);
parsed_testpoint_number = strcat(output_prefix, '_',second_part);
parsed_testpoint_number

但我觉得这很乏味,我不知道如何处理第二部分(16 to 016)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-12 08:23:53

在处理整数时,我建议将textscan更改为%d (整数)。这样,您就可以使用*printf命令的格式化功能(例如,sprintf)。

*printf允许您指定整数的宽度。使用%02d,将打印一个2个字符宽的整数,该整数将被填充为零。

textscan返回一个{1x1} cell,其中包含一个整数的2x1数组。*printf可以自己处理这个问题,所以您只需提供参数temp{1}

代码语言:javascript
复制
temp = textscan(testpoint_number, '%d', 'delimiter', '-');
parsed_testpoint_number = sprintf('%02d_%03d',temp{1});
票数 1
EN

Stack Overflow用户

发布于 2015-10-12 08:21:29

您的文本扫描可能是最直观的方法,但从那时起,我建议做的是将扫描的first_partsecond_part转换成数字格式,给出整数。

然后,您可以使用正确的‘c’样式格式化程序将其放入目标字符串,以指示您的零填充前缀宽度,例如:

代码语言:javascript
复制
temp = textscan(testpoint_number, '%d', 'delimiter', '-');
parsed_testpoint_number = sprintf('%02d_%03d', temp{1});

查看C sprintf()文档,了解字符串格式选项的说明。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33076228

复制
相关文章

相似问题

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