gpt4 book ai didi

java - 如何修剪字符串中的空格?

转载 作者:IT老高 更新时间:2023-10-28 21:17:33 26 4
gpt4 key购买 nike

我正在为 J2ME 应用程序编写这个函数,所以我没有一些更高级/现代的 Java 类可供我使用。我得到了 java.lang.ArrayIndexOutOfBoundsException 。因此,显然它不喜欢我初始化 newChars 数组的方式,或者我在调用 System.arraycopy 时没有正确执行某些操作。

/*
* remove any leading and trailing spaces
*/
public static String trim(String str) {
char[] chars = str.toCharArray();
int len = chars.length;
// leading
while ( (len > 0 ) && ( chars[0] == ' ' ) ) {
char[] newChars = new char[] {}; // initialize empty array
System.arraycopy(chars, 1, newChars, 0, len - 1);
chars = newChars;
len = chars.length;
}
// TODO: trailing
return chars.toString();
}

最佳答案

修剪前导和尾随空格的简单方法是调用 String.trim() .对于 Java 11 及更高版本,您还可以使用 String.strip()它对“空白”的含义使用了不同的解释1

如果您只想修剪前导和尾随空格(而不是所有前导和尾随空格),有一个名为 StringUtils.strip(String, String) 的 Apache 公共(public)方法可以做到这一点;使用 "" 作为第二个参数调用它。

您尝试的代码有许多错误,而且从根本上说效率很低。如果你真的想自己实现,那么你应该:

  1. 计算前导空格字符
  2. 计算尾随空格字符
  3. 如果任一计数不为零,则调用 String.substring(from, end) 以创建一个包含您要保留的字符的新字符串。

这种方法避免了复制任何字符2


1 - 不同的含义在各自的 javadocs 中有解释。或者,阅读 Difference between String trim() and strip() methods in Java 11 的答案.

2 - 实际上,这取决于 String 的实现。对于某些实现,不会有复制,而对于其他实现,则制作单个副本。但这两种方法都是对您的方法的改进,这需要至少 2 个副本,如果有任何要修剪的字符,则需要更多。

关于java - 如何修剪字符串中的空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3796121/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com