【问题标题】:Matlab formatting : wrap line in sprintfMatlab格式化:在sprintf中换行
【发布时间】:2012-09-10 16:18:29
【问题描述】:

我得到输出的值,它对应于 2 个文件之间的差异:

output = 'a.x: low 0 -> low 1a.b : 3 -> Medium 6'

那我printf内容

sprintf('files are different \n%s', output);

但我想显示如下(自动换行):

output :

a.x: low 0 -> low 1 
a.b : 3 -> Medium 6 

【问题讨论】:

  • output的内容怎么设置?在我看来,将这两行放在两个单独的变量中比将它们分开显示更容易......

标签: matlab printf


【解决方案1】:

你可以使用正则表达式来截断你的字符串

chopped = regexpi(output, '^(?<line1>[^>]*>[^\d]*[\d]*)(?<line2>.*)$', 'names')

这里的诀窍。

>> chopped = 

    line1: 'a.x: low 0 -> low 1'
    line2: 'a.b : 3 -> Medium 6'

假设是:

  1. 第一行总是有一个-&gt;
  2. 第一行总是以-&gt;之后的第一个数字结尾
  3. 以整数形式结束第一行的数值

如果你不熟悉正则表达式

  • (?&lt;line1&gt; )(?&lt;line2&gt; ) 用于捕获 chopped 变量中的匹配项。
  • [^&gt;]* 消耗到第一个 &gt;
  • [^\d]* 消耗所有非数字字符(所以直到以下数字开始)
  • [\d]* 使用所有数字字符
  • .* 消耗字符串的其余部分

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多