我有一个单元格数组x,每行都是一个字符串数组。 例如,
>>ab = x{2};
>>ab
ans =
910 Flow’S Equation
显然,这个字符串有一个模式:数字值和文本字符串由一些空格分隔。关于这个例子,当我输入
>> ab(2)
ans =
1
>> ab(3)
ans =
0
>> ab(6)
ans =
F
在我的代码中,我需要自动检查文本字符串的起始位置,即“F”的起始位置和数值的结束位置,即“0”的起始位置。我用
>> x = strfind(ab, ' ');
对于这个例子,我希望它给我“空间”的位置
4 5 12
相反,它只给了我12而没有输出4和5
我认为问题是ab的第四和第五个条目不是“空格”,我怎么知道它们是什么?当我输入
>> ab(4)
ans =
输出什么都没有,就像“空间”一样?
答案 0 :(得分:2)
要找出char ab(4)
是什么,请通过
double( ab(4) )
对于double(ab(4))=9
,它是TAB
。如果您的字符串是ASCII,您可能需要检查ASCII control characters和ASCII printable characters以获取映射。
但是,要查找文本字符串的开头,使用regexp
可能是个更好的主意:
string_begin = min( regexp(ab, '[^\d\s]') )
regexp(ab, '[^\d\s]')
返回既不是数字也不是空格的所有字符的位置,并且位置的最小值应该是文本开始的位置。
答案 1 :(得分:0)
尝试:
double(ab(4))
这可能是一个不可打印的ascii角色
另一种可以看到变量内容的方法是
sprintf('[%d]',sprintf('Some\n\r\ttext'))
ans =
[83][111][109][101][10][13][9][116][101][120][116]
或在你的情况下
ans =
sprintf('[%d]', ab );
如果您尝试在字符串中查找由空格或制表符分隔的单词,则可以使用:
regexp(x{2},'[\t ]','split')