仅在字符串末尾删除空格(java)

J.D*_*Doe 1 java string indexing whitespace replace

我已经找到了类似的主题,但是它们并没有真正的帮助。

我基本上需要知道如何仅在字符串末尾删除空格。

例如: String a = "Good Morning it is a nice day ";

应该: String a = "Good Morning it is a nice day";

您会看到末尾有三个空白。我得到了replaceAll()的建议,但是正如我所说的,我只想最后删除其余的空格。我怎么做 ?我已经尝试过类似通过String这样的不同操作:

for(int i = a.length(); i > a.length() - 3; i++){
     if(a.charAt(i) == ' '){
           <insert Solution here>
     }
}
Run Code Online (Sandbox Code Playgroud)

使用上面的代码,我想检查字符串的最后三个字符,因为这足够了。这足以满足我的需求。最后不会有99+个空格的情况(可能)。

但是如您所见,我仍然不知道该使用哪种方法,或者这是否是正确的方法。

有什么建议吗?

Prz*_*kal 6

如果您的目标是仅剪切尾随空格字符并保存字符串的前导空格字符,则可以使用String类的replaceFirst()方法:

String yourString = "   my text. ";
String cutTrailingWhiteSpaceCharacters = yourString.replaceFirst("\\s++$", "");
Run Code Online (Sandbox Code Playgroud)

\\s++- 一个或多个空白字符(使用占有量词(查看PatternJava API 文档中的 class,您已在那里列出了正则表达式中使用的所有特殊字符)),

$ - 字符串结束

您可能还想在编辑之前查看我的部分答案:

如果您不关心输入字符串的前导空白字符: String类提供了一种trim()方法。在您的情况下,它可能是快速解决方案,因为它会减少给定字符串的前导和尾随空格。


Ous*_* D. 5

您可以使用正则表达式:

a = a.replaceAll("\\s+$", "");
Run Code Online (Sandbox Code Playgroud)

删除尾随空格并将结果存储回 a

或使用for循环:

String a = "Good Morning it is a nice day    ";
StringBuilder temp = new StringBuilder(a);
for( int i = temp.length() - 1 ; i >= 0; i--){
     if(temp.charAt(i) == ' '){
          temp.deleteCharAt(i);
     }else{
          break;
     }
}

a = temp.toString();
Run Code Online (Sandbox Code Playgroud)