Javascript:模拟不带格式的字符串类型,然后带格式输出 问题
这里有一个有趣的问题:(我不擅长解释,所以可以先看一下示例:p) 我有一个带有(ansi)格式代码的字符串,我想输出该字符串的所有字符,除了所有的格式代码之外,以某种方式,它慢慢地生成一个字符串,直到找到一组特定的字符(§z),然后输出到该点的所有字符,但使用格式代码。然后开始键入消息的其余部分。每当到达§z时,打印(带格式)并再次开始键入(不带格式) 哦,在这个过程中,一些东西可以添加到“缓冲区”中。。 (所以我不能只使用.split(§z))) 例子Javascript:模拟不带格式的字符串类型,然后带格式输出 问题,javascript,string,formatting,char,buffer,Javascript,String,Formatting,Char,Buffer,这里有一个有趣的问题:(我不擅长解释,所以可以先看一下示例:p) 我有一个带有(ansi)格式代码的字符串,我想输出该字符串的所有字符,除了所有的格式代码之外,以某种方式,它慢慢地生成一个字符串,直到找到一组特定的字符(§z),然后输出到该点的所有字符,但使用格式代码。然后开始键入消息的其余部分。每当到达§z时,打印(带格式)并再次开始键入(不带格式) 哦,在这个过程中,一些东西可以添加到“缓冲区”中。。 (所以我不能只使用.split(§z))) 例子 假设我有这个字符串: “[33;22m
假设我有这个字符串: “[33;22m[1M欢迎![m§z你好[m” 然后,编写器将每秒输出一个字符,直到到达§z: 键入:W
打字:我们
欢迎光临 现在它看到§z并记录第一部分,但带有格式代码: 输出:[33;22m[1M欢迎![m] 然后重新开始并开始输出消息的其余部分:
键入:可能我不太理解这个问题。但是如果您的问题是如何在文档中添加另一种颜色。write,您可以在输出字符串中添加
“”+output+“”
(在本例中,表示绿色)
//要解决这个打印问题。。。
var contentBuffer=“”;
var displayContent=“”;
var缓冲=假;
var INPUT=“[33;22m [1mWelcome![m§z Hello [m”;
//打印功能
函数printMessage(){
//删除格式。用户不键入颜色,因此我们也不键入颜色。
contentBuffer+=INPUT.replace(/[\u001b\u009b][[()#?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=>解决方案
以下是我如何解决这个问题(目前):
我知道每一个foramtting代码都以转义字符开头(因为我只使用ansi颜色格式代码),所有代码都以字母“m”结尾。正如我所说,简单地拆分字符串不是一个选项,而是我创建了两个单独的字符串。缓冲区将附加到这两个字符串,除非它到达转义字符,然后它将只附加到其中一个字符串,直到到达“m”,然后继续正常行为
代码
//要解决这个打印问题。。。
var contentBuffer=“”;
var displayContent=“”;
var typeContent=“”;
var缓冲=假;
var输入=”;
//打印功能
函数printMessage(){
//删除格式化。用户不输入格式化代码,所以我们也不输入。
contentBuffer+=输入;
如果(!缓冲){
缓冲=真;
缓冲区();
}
}
函数缓冲区(){
如果(contentBuffer!=“”){
if(contentBuffer[0]==“§”){
if(contentBuffer[1]=“z”){
文件。写入(“输出:+displayContent+”
);
typeContent=“”;
displayContent=“”;
}
contentBuffer=contentBuffer.slice(2);
}否则,如果检测到(contentBuffer[0]=“\x1b”){//转义字符!
for(var i=0,len=contentBuffer.length;i );
contentBuffer=contentBuffer.slice(1);
}
设置超时(缓冲区,1000);
}否则{
缓冲=假;
}
}
函数suddenEvent(){
document.write(“突然发生事件!
”);
输入=“再见!§z”;
printMessage();
}
//运行它:
INPUT=“\x1b[33;22m\x1b[1mWelcome!\x1b[m§z Hello\x1b[m”;
文件。写入(“输入:“+Input+”
);
printMessage();
setTimeout(suddenEvent,28000);
感谢您的回复,但以颜色输出不是我的问题。document.write();无论如何都是一个占位符。我希望我的脚本产生我在示例中显示的行为。我对我的帖子做了一些修改,希望现在更清楚。。