bir dize gelen ANSI renk kodlarını değiştirmek için. İlk parametre ANSI renk kodları içeren bir dizge olup, ikinci parametre, bir boolean. nasıl sorun aşağıda fonksiyonu ile sorunun çözümünde var/kaldırmak JavaScript
boolean false
ayarlanırsa
true
ayarlanırsa
, bir döngü beni daha sonra ayrıştırmak için daha kolay bir hale her renk kodlarını dönüştürün.
Ben 1 arasında karışık olarakRegExp
sorun olmaktan şüpheli; 33 ve 0; nedense 31.
var colorReplace = function(input, replace) {
var replaceColors = {
"0;31" : "{r",
"1;31" : "{R",
"0;32" : "{g",
"1;32" : "{G",
"0;33" : "{y",
"1;33" : "{Y",
"0;34" : "{b",
"1;34" : "{B",
"0;35" : "{m",
"1;35" : "{M",
"0;36" : "{c",
"1;36" : "{C",
"0;37" : "{w",
"1;37" : "{W",
"1;30" : "{*",
"0" : "{x"
};
if (replace)
{
for(k in replaceColors)
{
//console.log("\033\[" + k + "m" + replaceColors[ k ]);
var re = new RegExp("\033\[[" + k + "]*m", "g");
input = input.replace(re, replaceColors[ k ]);
}
} else {
input = input.replace(/\033\[[0-9;]*m/g, "");
}
return input;
};
console.log("abcd\033[1;32mefgh\033[1;33mijkl\033[0m");
console.log(colorReplace("abcd\033[1;32mefgh\033[1;33mijkl", true));
gerçek çıktı şöyledir:
Nerede abcd{Gefgh{Yijkl
Artık herkes neyin yanlış olduğunu biliyor olmalı?
replaceColor'un ikinci parametresi bir booledir ve ya okunması kolay (IMO) ve ayrıştırılması kolay bir dizeyle tüm renk kodlarını değiştirir ya da false kullanılıyorsa, bulunan tüm colorcode'ları kaldıracaktır. . – Cybrix