Matlab:解析字符串

时间:2015-10-12 08:12:38

标签: matlab

如何将1-14之类的字符串转换为01_014? (以及2-2进入02_002)?

我可以这样做:

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

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

2 个答案:

答案 0 :(得分:1)

您的文本扫描可能是执行此操作的最直观方式,但从那时起,我建议您将扫描的first_partsecond_part转换为数字格式,并为您提供整数。

然后,您可以使用正确的'-style样式格式化程序将sprintf这些内容添加到目标字符串中,以指示您的零填充前缀宽度,例如:

temp = textscan(testpoint_number, '%d', 'delimiter', '-');
parsed_testpoint_number = sprintf('%02d_%03d', temp{1});

请查看C sprintf() documentation以获取有关字符串格式选项的说明。

答案 1 :(得分:1)

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

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

textscan返回{1x1} cell,其中包含2x1个整数数组。 *printf可以自行处理,因此您只需提供参数temp{1}

temp = textscan(testpoint_number, '%d', 'delimiter', '-');
parsed_testpoint_number = sprintf('%02d_%03d',temp{1});