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

Que*_*ger 28 java string trim variable-assignment

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

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

输出是:

before->> some Thing <<-
after->>some Thing<<-
Run Code Online (Sandbox Code Playgroud)

作品.但我想知道如果通过为自己分配一个变量,我做的是正确的.我不想通过创建另一个变量并为其分配修剪值来浪费资源.我想在原地进行修剪.

我这样做对吗?

gpo*_*ojd 18

你做得对.从文档:

字符串是不变的; 它们的值在创建后无法更改.字符串缓冲区支持可变字符串.因为String对象是不可变的,所以可以共享它们.

还来自文档:

修剪

public String trim()

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

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

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

此方法可用于从字符串的开头和结尾修剪空白(如上所述).

退货:

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


aga*_*aga 10

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