strrep符合空替换字符串

12个视图(30天)
伊恩”class=
伊恩 2019年5月20日
评论道: Stephen23 2019年6月5日
我已经报告了这是一个错误。strrep响应不同的替换字符串时各种风格的空。
“合适的”方法可以做到这一点:
x =“abc defg”;
> > y = strrep (x,“defg”,”“)%与空字符串对象
y =
“abc”%预期的结果
> > y = strrep (x,“defg”,)%与一个空字符数组
y =
“abc”%相同的结果
y = strrep (x,“defg”,char [])%与一个空字符数组
y =
“abc”%也相同的结果
一种可能会使用[]或字符串替换字符串([]),特别是如果使用类似的类成员初始化为空。但使用第一个产生预期的结果(但警告),在使用第二个意外清除整个返回值:
> > y = strrep (x,“defg”[])%与一个空数组
警告:必须输入是特征向量、细胞字符数组向量,或字符串数组。
y =
“abc”%相同的结果,但警告……
> > y = strrep (x,“defg”字符串([]))%与空字符串数组
y =
0×0空字符串数组“哎哟!为什么这是一个不同的吗?
就好了在Matlab将治疗[]和字符串([])”一样,“char([]),或者抛出一个错误代码中止当了一个意想不到的数据类型。

答案(1)

11日萨达纳舞”class=
11日萨达纳舞 2019年5月29日
字符串( [])”是一个空字符串数组,而不是一个标量字符串数组没有字符。 strrep 保留的形状 它的 种基本输入。获得预期的结果。 美国广播公司(abc)” ,提供一个标量字符串没有字符:
y = strrep (x,“defg”字符串([)))
1评论
伊恩”class=
伊恩 2019年6月4日
编辑:伊恩 2019年6月4日
这不是问题的关键。Matlab看到[],char[])和字符串([])空对象,所以每个人都应该合理期望Matlab使用他们在character-processing操作相同。然而,它产生不同结果的产品后一个比前两个。在上面我的帖子中,您可以看到使用
字符串([])
作为一个参数错误导致输出被完全空了,而只使用
[]
char ([])
预期的输出结果。字符串对象和char数组在matlab在大多数情况下可以互换,所以strrep(…)应该对所有三个相同,或抛出一个错误如果使用空字符串objct无效输入。
这里的问题是,Matlab是相对近期的字符串对象是一个持续的过程,而且还需要清理。Mathworks尚未发现所有的地方默默地把字符串对象不同于char数组。
指出这些矛盾将帮助Mathworks找到并解决这些问题。我已经提交了这Mathworks bug报告,他们认为这里有一个矛盾需要解决。

登录置评。

标签

s manbetx 845


释放

R2019a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!