Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从字符串中删除最后一个字符的超简单方法失败_Java - Fatal编程技术网

Java 从字符串中删除最后一个字符的超简单方法失败

Java 从字符串中删除最后一个字符的超简单方法失败,java,Java,我只是想删除字符串中的最后一个字符,我知道这是一个简单的任务,已经做过很多次了,但由于某种原因它不起作用 示例法 public String removeLastChar(String stringToRemoveCharFrom) { if(stringToRemoveCharFrom.length() > 0) { return stringToRemoveCharFrom.substring(0, stringToRemoveCharFrom.leng

我只是想删除字符串中的最后一个字符,我知道这是一个简单的任务,已经做过很多次了,但由于某种原因它不起作用

示例法

public String removeLastChar(String stringToRemoveCharFrom)
{
    if(stringToRemoveCharFrom.length() > 0)
    {
        return stringToRemoveCharFrom.substring(0, stringToRemoveCharFrom.length());
    }
    else{
        return stringToRemoveCharFrom;
    }
}
现在,当我输出字符串时,有时我会在末尾得到一个空字符,当我调用这个函数时,它以正确的方式运行,但字符串保持不变

调试器显示: \b在一些输出中,这是什么?我该如何避免呢

有什么想法吗


我在答案中将结尾替换为-1 like,但仍然无法删除:

return stringToRemoveCharFrom.substring(0, stringToRemoveCharFrom.length() - 1);
似乎出于某种原因,JAVA正在输入无法删除的奇怪字符。例如\b

如果我在开始时执行以下操作:

stringToRemoveCharFrom = stringToRemoveCharFrom.replaceAll("\b", "");

它起作用了。但是我想知道这个字符是什么?

stringToRemoveCharFrom.substring(0,stringToRemoveCharFrom.length())

将返回整个字符串。你应该做的是:


stringToRemoveCharFrom.substring(0,stringToRemoveCharFrom.length()-1)


这是因为
子字符串(int start,int end)
返回一个子字符串,该子字符串从“start”开始,在“end”之前的索引1结束。起始索引是包含的,结束索引是独占的。

您忘了从长度中减去一:

public String removeLastChar(String stringToRemoveCharFrom)
{
    if(stringToRemoveCharFrom.length() > 0)
    {
        return stringToRemoveCharFrom.substring
               (0, stringToRemoveCharFrom.length() - 1);
    }
    else{
        return stringToRemoveCharFrom;
    }
}
是字符串的副本,如果要删除最后一个字符,请使用:

stringToRemoveCharFrom.substring(0, stringToRemoveCharFrom.length() - 1);

将stringToRemoveCharFrom.length()替换为stringToRemoveCharFrom.length()-1关闭一个错误。。。程序员的噩梦…请冷静,重新编译和反馈:-)当然
子字符串(…)
不会更改原始字符串..它
返回一个新字符串(长度
=to-from
)“\b”是“退格字符”的转义符。@iLoveUnicorns似乎工作正常。能否请您进一步编辑您的问题,并显示一个完整的代码示例,该代码不符合您的期望?
stringToRemoveCharFrom.substring(0, stringToRemoveCharFrom.length() - 1);