2017-03-02 148 views
0

我有这串在我的项目:加括号到MATLAB字符串

x = 'a124cd5f' 

我下面把它分解:

x1 = regexp(x, sprintf('\\w{1,%d}', 2), 'match') 

答案将是:

x1 = ‘a1’ ‘24’ ‘cd’ ‘5f’ 

现在我想将括号添加到x1字符串的两侧。我用这个命令:

x2 = strcat('{', x1, '}') 

答案是:

x2 = {‘a1’} {‘24’} {‘cd’} {‘5f’} 

但我想答案是这样的一个:

x2 = {‘a1’ ‘24’ ‘cd’ ‘5f’} 

我可怎么办呢?

+0

目前尚不清楚你想要的! 'x1'是一个char类型的单元数组,但是你想要'x2'是什么?如果它应该只是一个看起来像你所描述的字符,你可以使用:'x2 = ['{''',strjoin(x1,'''''),'''}']' –

回答

1

regexp为每个匹配的子字符串返回一个单元格数组和单元格。如果你希望它们是一个字符串,你需要明确地连接这些单元格。

一种选择是使用sprintf

x = 'a124cd5f'; 
x1 = regexp(x, sprintf('\\w{1,%d}', 2), 'match'); 

s1 = strtrim(sprintf('''%s'' ', x1{:})); % Use strtrim to strip the trailing whitespace 
s2 = sprintf('{%s}', s1); 

将返回:

s2 = 

{'a1' '24' 'cd' '5f'} 
+0

谢谢但是我也需要逗号,如{'a1''24''cd''5f'} –

+0

该字符串中没有逗号(',')。假设你的意思是引号('''),我在发布后立即对问题进行了小小的修改。 – excaza

+0

是的,没错 –