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

Bab*_*ghi 6 matlab

我使用几个字符串形成一个特定的字符串strcat并将其显示在控制台中 此字符串包含的字符如:1,2,3,4,5,6,7,8,9,0,#,*,E和现在用的fprintf('%s')这个目的.

例如:

2E4137E65922#

是代码的可能结果.

无论如何,我可以写信E在我的输出中脱颖而出吗?喜欢把它弄成红色?

And*_*uri 7

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

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

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

在此输入图像描述

编辑:理论上,如果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');
Run Code Online (Sandbox Code Playgroud)

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

如果你用'EE'代替'E'作品....

EDIT2:我给Yari Altman留言.希望如果他能,他会解决这个问题.


Lui*_*ndo 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)
Run Code Online (Sandbox Code Playgroud)


And*_*uri 3

感谢@Dev -iL 提供此信息!

虽然从我的另一个答案来看,似乎cprinf()不适用于单个字符,但如果有人想要使用一种颜色,并且该颜色是橙色,那么可以使用用于warningin的这个技巧:cprintf

disp(['this is [' 8 'orange]' 8 ' text'])
Run Code Online (Sandbox Code Playgroud)

阅读更多信息:http ://undocumentedmatlab.com/blog/another-command-window-text-color-hack

因此,您的代码将如下所示:

s='2E4137E65922#';
C=strsplit(s,'E');
str=C{1};
for ii=2:size(C,2)
    str=[str ['[' 8 'E]' 8 ]];
    str=[str C{ii}];
end
disp(str);
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述