在字符串中查找逗号

时间:2016-11-08 12:57:11

标签: matlab indexing

[23567,0,0,0,0,0],其他值为[452221,0,0,0,0,0],值应该连续显示约100个值,然后我想只显示第一个样本23567和第二个样本中的传感器值452221,只需显示这些值。为此,我写了一个代码
value = str2double(str(2:7)); see here my attempt 所以我想在输出中找到逗号,只显示第一个逗号前的值

2 个答案:

答案 0 :(得分:1)

正如excaza的评论中所提出的,MATLAB有专门的功能,例如sscanf用于此目的。

sscanf(str,'[%d')

匹配但忽略第一个[,并将下一个(即第一个)数字作为双变量返回,而不是字符串。

不过,我喜欢使用正则表达式匹配数字的想法。我建议您使用regexp直接匹配数字,而不是匹配所有的零和逗号,并按''替换它们。

您可以使用

返回str中的所有数字(仍为字符串!)
nums = regexp(str,'\d*','match')

并使用

将第一个数字转换为双变量
str2double(nums{1})

要仅匹配str中的第一个数字,我们可以使用正则表达式

nums = regexp(str,'[(\d*),','tokens')

找到[,然后取任意数量的小数(0-9),并在找到,时停止。将\d*括在括号中,只返回括号中的部分,即只返回没有[,的数字。

最后注意:如果您继续使用字符串,则可以/应该考虑regexp解决方案。如果你将它转换为双倍,使用sscanf可能更快更容易。

答案 1 :(得分:0)

您可以按如下方式使用regexprep

str='[23567,0,0,0,0,0]' ;
required=regexprep(str(2:end-1),',0','')
%Taking str(2:end-1) to exclude brackets, and then removing all ,0 

如果在0之后可能存在,以外的值,则可以使用以下更通用的方法:

required=regexprep(str(2:end-1),',[-+]?\d*\.?\d*','')