字符串的事情
在MATLAB中处理文本已经经过了一段时间的发展。过去,文本数据存储在双数组中,带有一个内部标志来表示它是文本。然后我们对这种表示方式进行了转换,使字符数组成为它们自己的类型。和我提到早些时候我们引入了字符串数据类型使文本数据更高效和自然。让我更多地告诉你。
内容
如何比较文本:古老的日子
在Matlab早期,我们使用了这个功能比较字符串比较字符串。对许多人来说是一个大警告比较字符串不像c语言一样工作。之后我们又添加了一些比较函数:
允许不敏感的匹配并最多限制匹配N人物。
现在我们来做一些比较。首先是字符串的单元格数组…
cellchars = {'汞'那“金星”那“地球”那“火星”}
cellChars = 1×4 cell array {'Mercury'} {'Venus'} {'Earth'} {'Mars'}
tf = strcmp(“弗雷德”,Cellchars)
TF = 1×4逻辑阵列0 0 0 0
tf = strcmp(“金星”,Cellchars)
TF = 1×4逻辑阵列0 1 0 0
TF = strncmp (“火星”cellChars, 2)
TF = 1×4逻辑阵列0 0 0 1
TF = strncmp ('奇妙'cellChars, 2)
TF = 1×4逻辑阵列0 0 0 1
TF = strncmp ('奇妙',cellchars,4)
TF = 1×4逻辑阵列0 0 0 0
TF = strcmpi ('火星'cellChars)
TF = 1×4逻辑阵列0 0 0 1
TF = strcmpi ('mar'cellChars)
TF = 1×4逻辑阵列0 0 0 0
更现代,而不是相同的用途
我们还介绍了分类用于限制字符串选择的情况的案例是合适的。使用时分类变量,您可以使用==的比较。
catStr =分类(cellChars)
catStr = 1×4分类阵列水星金星地球火星
tf =“火星”= = catStr
TF = 1×4逻辑阵列0 0 0 1
大约2020年的字符串比较
而现在是字符串比较。
str = string(cellchars)%或[“汞”,“金星”、“地球”,“火星”)
str = 1×4字符串阵列“汞”“金星”“地球”“火星”
我还可以用str * cmp *职能。但我们不仅限于他们。
tf = strcmp(“火星”str)
TF = 1×4逻辑阵列0 0 0 1
我们现在可以使用==和相关操作符,而不必担心字符数组可能出现的索引问题。
tf = str〜=“火星”
TF = 1×4逻辑阵列1 1 1 0
最近,我们介绍了这个功能匹配。
tf = matches(str,“地球”)
TF = 1×4逻辑阵列0 0 1 0
它有一些很好的特性可以很好地处理字符串数组。比如寻找地球内部有轨道的行星。
tf =匹配(str,[“水星”那“金星”])
TF = 1×4逻辑阵列1 1 0 0
当然,我可以忽略案例,用代码给我来说,看起来较少的神秘程度。
tf = matches(str,“地球”那“Ignorecase”,真的)
TF = 1×4逻辑阵列0 0 1 0
如在所有这些情况下都是如此,我们可以使用逻辑输出索引到原始阵列中以提取相关项目。
str (TF)
ans =“地球”
我的建议:代码可读性方面的错误
我在这里没有触及表演,而是最近的司机之一字符串数据类型是效率和性能。我们努力覆盖它具有使代码高度可读的功能。这使得代码维护和代码传输更顺畅。我倾向于在迅速速度迅速享受这一点。在字符串的情况下,您甚至可能不需要进行权衡。
采用字符串
你有足够的证据表明字符串是在Matlab中使用文本数据的未来吗?告诉我们你的想法在这里。
注释
请点击留下评论在这里登录到你的MathWorks帐户或创建一个新的。