如何将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
但我觉得这很乏味,我不知道如何处理第二部分(16
到016
)
答案 0 :(得分:1)
您的文本扫描可能是执行此操作的最直观方式,但从那时起,我建议您将扫描的first_part
和second_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});