如何从带有空格的字符串中删除最后一个字符

时间:2018-11-20 23:19:08

标签: java

我正在创建带有退格按钮的计算器应用程序,并且需要删除不是空格的字符。

说我有一个字符串,例如:

String s = "1 + 2 - 3";

我希望能够单击该按钮,然后先将其删除。 如果我再次单击该按钮,则想删除“-”本身,而不是删除“-”之后的空格。

我最初尝试的方法是:

s = s.replaceAll(" ", "");
s = s.substring(0,field.length()-1);
s = s.replaceAll("", " ").trim();

我需要空格的唯一原因是有一个用于评估表达式的类,并且需要空格才能正确地对其进行评估。

对于我现在拥有的内容,如果我要单击退格键并删除“ 3”,然后单击另一个按钮(如2),我将得到:

"1 + 2 -2"

但是,我想要的是:

"1 + 2 - 2" 

2 个答案:

答案 0 :(得分:1)

技巧是在删除字符时也使用.trim()来删除空格:

static String removeAChar(String s) { //1st trim() to be sure, 2nd trim() to remove extra space
    return s.trim().substring(0, s.length() - 1).trim();
}

这将给出:

public static void main(String[] args) {
    String s = "h e l l o";
    System.out.println(s);
    for (int i = 0; i < 4; i++) {
        s = removeAChar(s);
        System.out.println(s);
    }
}
/*
h e l l o
h e l l
h e l
h e
h

答案 1 :(得分:0)

Trim方法还将删除所有前导空格。因此,如果您有“ h e l l o”,它将删除“ h”之前的第一个空格。如果您不想这样做,这是一个解决方案

spring.main.allow-bean-definition-overriding=true