string - 在基本工作区中查找具有部分字符串匹配的变量(Matlab)

标签 string matlab variables match partial

我想知道如何通过仅输入变量名称的一部分来在基本 MATLAB 工作区中查找变量。我有一长串变量并且我不知道确切的变量名称。是否有一个函数可以比较/匹配变量字符串列表中的字符顺序?

谢谢

最佳答案

您可以使用who获取当前工作区中所有变量名称的列表。从那里,您可以使用 regexpi执行不区分大小写 regular expression查找以查找与您的查询匹配的变量。像这样的东西:

namesWorkspace = who;
outStr = regexpi(namesWorkspace, 'nameOfVariable');
ind = ~cellfun('isempty',outStr);
vars = namesWorkspace(ind);

nameOfVariable 是您正在搜索的变量的名称或部分名称。 outStr 将为您提供一个元素元胞数组,其大小与工作区中的变量总数相同。如果此输出元胞数组中的元素为空,则相应的工作区变量不匹配。如果它非空,则存在匹配。我们只需遍历此输出元胞数组并确定哪些位置非空,然后使用这些位置索引到工作区名称数组中以检索所需的最终变量(存储在 vars)。 cellfun允许您迭代元胞数组中的每个元素并向其应用函数。在本例中,我们要使用 isempty 检查每个单元格以查看其是否为空。 。因为我们想要相反,所以我们需要反转运算,所以使用~

例如,这是我最近回答问题后的工作空间:

names = 

    'O'
    'ans'
    'cellData'
    'idx'
    'names'
    'out'
    'possible_names'
    'possible_surnames'
    'student_information'

让我们找到那些包含单词“possible”的变量名称:

outStr = regexpi(namesWorkspace, 'possible');
ind = ~cellfun('isempty',outStr);
vars = namesWorkspace(ind)

vars = 

    'possible_names'
    'possible_surnames'

更简单

谨此向 Sam Roberts 致敬。您只需应用 -regexp 标志并指定您想要查找的模式:

vars = who('-regexp', 'possible')

vars = 

'possible_names'
'possible_surnames'

关于string - 在基本工作区中查找具有部分字符串匹配的变量(Matlab),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28592021/

相关文章:

c - C语言中用一个字符替换字符串中的多个字符

performance - 矢量化代码比循环慢?软件

C# 引用赋值运算符?

javascript - 使用函数更改全局变量

php - 将 Javascript 变量显示为 PHP 变量

c - 使用 sscanf 读取字符串的剩余部分

string - 如何将字符串和/或数字分成数组?

string - 删除字符串的内容 - TextBox 的行为与 DataGridView 文本单元格略有不同

matlab - 如何更改直方图中特定 bin 的颜色?

matlab - 在 matlab 命令行中单行打印