首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在主字符串中提取随机选择的字符串: MATLAB

在主字符串中提取随机选择的字符串: MATLAB
EN

Stack Overflow用户
提问于 2018-06-02 07:54:04
回答 1查看 98关注 0票数 1

我正在使用的字符串与下面写的字符串类似:

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)。注意,我们只从left移动到right side。

但是,如果在所选数字内有n 左方括号,我们必须跳过以找到我们要查找的右方括号,如图B中所示。

如果您有任何意见或建议,请让我知道。谢谢你,

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-02 09:04:09

首先,找到12的位置,以获得随机位置。

代码语言:javascript
复制
inds = find(String_1 == '1' | String_1 == '2');
random_number_pos = inds(randi(length(inds)));

现在,我们可以使用堆栈的概念来查找第一个未打开的}

代码语言:javascript
复制
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)) = [];
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50652259

复制
相关文章

相似问题

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