我正在使用的字符串类似于下面的字符串:
String_1='{2,2,1,1,{1,1,2,2,{1,2,{1,1,1,1,1}},2,2},{1,2,{1,2,2,2,2,2},2},{1,1},2,2,2,2,1,1,1,1,1}';
首先,我必须随机选择字符串中的一个数字。之后,我必须提取从所选数字到第一个}
的字符串,然后用它创建另一个字符串(参见图 A )。请注意,我们只从左转到右侧侧。
然而,如果所选号码中有n
打开 括号,我们必须跳过n
< strong> 关闭 括号以进入我们正在寻找的结束括号,如图 B 所示。
如果您有任何意见或建议,请与我们联系。谢谢。
答案 0 :(得分:2)
首先,找到1
和2
的位置以获得随机位置。
inds = find(String_1 == '1' | String_1 == '2');
random_number_pos = inds(randi(length(inds)));
现在,我们可以使用堆栈的概念来查找未打开的第一个}
。
parentheses_opened = 0;
start_ind = random_number_pos + 2; end_ind = 0;
for ind = (random_number_pos + 2):length(String_1)
if(String_1(ind) == '}' && parentheses_opened == 0)
end_ind = ind - 1;
break;
elseif(String_1(ind) == '{')
parentheses_opened = parentheses_opened + 1;
elseif(String_1(ind) == '}')
parentheses_opened = parentheses_opened - 1;
end
end
String_2 = String_1(start_ind:end_ind);
String_1((start_ind - 1):(end_ind + 1)) = [];