从MATLAB系统命令中查找换行符

gen*_*gan 5 string matlab printf system

我正在尝试将结果字符串从系统命令解析为外部程序.

[status,result] = system(cmd);
Run Code Online (Sandbox Code Playgroud)

结果打印出我的控制台,其线条正确分解,即

一号线

2号线

...

但它实际上只是一个长字符数组,并且在任何地方都没有换行符.matlab如何知道何时打印新行?我怎样才能将char数组分成单独的行以进行进一步的解析.谢谢!

yuk*_*yuk 4

根据操作系统的不同,不同的字符代表行尾。可以是\n\r\f或它们的组合。这些字符的 ASCII 代码少于 30。因此您可以通过以下方式查找它们,例如find(results < 30)显示它们在字符串中的位置,并int32(results(results < 30))查看它们的代码。

int32(sprintf('\n\r\f'))

ans =

      10          13          12
Run Code Online (Sandbox Code Playgroud)

然后你可以使用你得到的代码来分割字符串:

regexp(results, char(13), 'split')
Run Code Online (Sandbox Code Playgroud)

如果您对哪些字符用作行尾不感兴趣,您可以尝试:

regexp(results, '[\f\n\r]', 'split')
Run Code Online (Sandbox Code Playgroud)