上下文
在R2016b中,MATLAB引入了一种新的 字符串 数据类型,除了通常的字符数据类型。这样做很好,但现在它正在给我使用的JSONlab 工具箱带来很多问题。
例如,在R2015b中,loadjson
返回一个 1x3 的字符数组:
dd = loadjson('["Titi", "Toto", "Tata"]')
dd =
'Titi' 'Toto' 'Tata'
但是在 R2018a 中,loadjson
返回一个 1x3 的字符串数组:
dd = loadjson('["Titi", "Toto", "Tata"]')
dd =
1×3 cell array
{["Titi"]} {["Toto"]} {["Tata"]}
问题
为了不必在各处更改我的代码,我想修补loadjson
例程,以将其返回的所有字符串
类型替换为字符
类型。例如,在以下单元数组中:
test = { 'hello', "world", 0.3; 'how', 'are', "you"}
test =
2×3 cell array
{'hello'} {["world"]} {[0.3000]}
{'how' } {'are' } {["you" ]}
我想替换所有的字符串:
cellfun(@isstring, test)
ans =
2×3 logical array
0 1 0
0 0 1
有没有一种方法可以快速完成它(即不需要循环所有元素)?
附注:我知道使用jsondecode和jsonencode替换JSONLab是未来的方向,但到目前为止,我只想快速修复一些东西。
char
将转换为字符数组。使用cellfun
或类似方法将其应用于数组,然后使用您拥有的逻辑索引进行替换。 - MattTiti
Toto
是新的foo
bar
。 - Vanity Slug