Java StringBuilder.delete如何解释参数?
我有一种用于Java StringBuilder.delete如何解释参数?,java,stringbuilder,Java,Stringbuilder,我有一种用于telnet文本通信的缓冲方法。除了标准字母外,这种交流还有一些有趣的控制字符。其中之一是带有8整数值的字符删除 我想实现这个值-它将真正帮助我使用telnet中的程序,因为如果我按错一个字符,目前我需要重新键入整个命令 所以我做了一个检查函数,每次接收字符时都会调用它: public boolean newChar(char current, StringBuilder all) { //Debug info switch (current) { c
telnet
文本通信的缓冲方法。除了标准字母外,这种交流还有一些有趣的控制字符。其中之一是带有8
整数值的字符删除
我想实现这个值-它将真正帮助我使用telnet中的程序,因为如果我按错一个字符,目前我需要重新键入整个命令
所以我做了一个检查函数,每次接收字符时都会调用它:
public boolean newChar(char current, StringBuilder all) {
//Debug info
switch (current) {
case 13 : Log.debug("Character '\\r' [13]");break;
case 10 : Log.debug("Character '\\n' [10]");break;
case 8 : Log.debug("Character DELETE [8]");break;
default:Log.debug("Character '"+current+"' ["+(int)current+"]");
}
//Delete character
if(current==8) {
int length = all.length();
if(length>1) {
///THIS DOES NOT WORK
//all.delete(length-2, length-1);
///WHILE FOLLOWING WORKS WELL
all.deleteCharAt(length-1);
all.deleteCharAt(length-2);
Log.debug("Deleted one character from buffer. Current buffer:\n "+all);
}
else
all.deleteCharAt(length-1);
}
//Ignore newlines
else if(current=='\r'||current=='\n') {
all.deleteCharAt(all.length()-1);
}
//Return true if current character is newline
//True return value means that the buffer now contains whole message...
return current=='\n';
}
如果收到删除字符,则应删除该字符及其前面的字符。我认为这个计划应该适合这个目的
int length = builder.length();
builder.delete(length-2, length-1);
但是,这将删除2个字符和删除字符-3个字符:
Character '6' [54]
Character '6' [54]
Character '6' [54]
Character DELETE [8]
Deleted one character from buffer. Current buffer:
6
我还尝试了builder.delete(length-1,length)代码>,尽管它毫无意义。我没有删除我能看到的任何东西。(我猜它删除了删除字符,然后默默地失败了)。
有趣的是,这对我来说很好:
builder.deleteCharAt(length-1);
builder.deleteCharAt(length-2);
有人能解释为什么会发生这种情况吗?开始是包含的,结束是独占的。你如何管理这些以删除3个字符?哦,但这令人难以置信的困惑。。。我只是猜测有3个字符被删除了。当然,DELETE
字符在输出中是不可见的。我认为,在中,not DELETE(BS代表Backspace)默认情况下,telnet也使用LINEMODE-因此所有Backspace都在客户端处理,为什么您必须在服务器上处理它们?我的telnet(Windows telnet)默认情况下不使用LINEMODE。谢谢你告诉我这个角色的名字——我刚用它的时候把它命名为DELETE。我从未读过任何关于telnet实际工作原理的文档。