在Java中修剪字符串的正确方法

2022-09-01 13:17:18

在Java中,我这样做是为了修剪一个字符串:

String input = " some Thing ";
System.out.println("before->>"+input+"<<-");
input = input.trim();
System.out.println("after->>"+input+"<<-");

输出为:

before->> some Thing <<-
after->>some Thing<<-

工程。但我想知道,通过为自己分配一个变量,我是否在做正确的事情。我不想通过创建另一个变量并为其分配修剪后的值来浪费资源。我想就地进行修剪。

那么我这样做对吗?


答案 1

你做对了。从文档中

字符串是常量;创建后无法更改其值。字符串缓冲区支持可变字符串。由于 String 对象是不可变的,因此可以共享它们。

同样来自文档

修剪

公共字符串修剪()

返回字符串的副本,省略前导空格和尾随空格。如果此 String 对象表示空字符序列,或者此 String 对象表示的字符序列的第一个和最后一个字符的代码都大于“\u0020”(空格字符),则返回对此 String 对象的引用。

否则,如果字符串中没有代码大于'\u0020'的字符,则会创建并返回一个表示空字符串的新 String 对象。

否则,设 k 是代码大于 '\u0020' 的字符串中第一个字符的索引,并让 m 作为代码大于 '\u0020' 的字符串中最后一个字符的索引。将创建一个新的 String 对象,表示此字符串的子字符串,该子字符串以索引 k 处的字符开始,以索引处的字符 m 结尾,即 this.substring(k, m+1) 的结果。

此方法可用于从字符串的开头和结尾修剪空格(如上定义)。

退货

删除前导和尾随空格的此字符串的副本,或者如果此字符串没有前导或尾随空格,则为此字符串的副本。


答案 2

由于 Java 中的字符串是不可变的对象,因此无法就地执行修剪。要修剪字符串,您唯一可以做的就是创建新的修剪过的字符串版本并返回它(这就是该方法的作用)。trim()