在控制台中更改特定字母的颜色

时间:2015-09-21 11:28:45

标签: matlab

我正在使用多个strcat形成一个特定的字符串并将其显示在控制台中。此字符串包含以下字符:1234567,{ {1}},890#*并为此目的使用E

例如:

  

2E4137E65922#

是代码的可能结果。

无论如何,我可以让fprintf('%s')字母在我的输出中脱颖而出吗?就像把它弄成红色一样?

3 个答案:

答案 0 :(得分:6)

不幸的是,没有正式的方法可以做到这一点。但是,您可以使用Yari Altman的cprintf()。它滥用Matlab的无证功能来完全按照你的意愿行事。

您可以在他运行的着名Undocumented Matlab博客中阅读更多内容。

FEX中的示例图像如下所示:

enter image description here

编辑:从理论上讲,如果cprintf按预期工作,则以下情况应该有效:

C=strsplit(s,'E');
cprintf('black',C{1});
for ii=2:size(C,2)
    cprintf('err','E');
    cprintf('black',C{ii});
end
cprintf('black','\n');

然而,在Matlab 2014b中,它并没有给出好的结果。我发现当有一个要格式化的字符时,它无法正常工作。

如果用“EE”代替“E”作品......

EDIT2:我向Yari Altman发表评论。希望如果可以,他会解决问题。

答案 1 :(得分:5)

您可以使用HTML标记<strong></strong>以粗体键入特定字母:

str = '2E4137E65922#'; %// input string
letter = 'E'; %// letter that should be made bold
strBold = regexprep(str, letter, ['<strong>' letter '</strong>']); %// output string
disp(str)
disp(strBold)

答案 2 :(得分:2)

感谢@Dev -iL获取此信息!

虽然我的其他答案中的cprinf()似乎不适用于单个字符,但如果有一种颜色需要使用,并且该颜色为橙色,则此技巧用于{{1}可以使用warning中的}:

cprintf

阅读详情:http://undocumentedmatlab.com/blog/another-command-window-text-color-hack

因此,您的代码看起来像:

disp(['this is [' 8 'orange]' 8 ' text'])

enter image description here