如何从字符串中修剪空格?

use*_*442 26 java java-me

我正在为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();
}
Run Code Online (Sandbox Code Playgroud)

Ste*_*n C 37

修剪前导和尾随空格的简单方法是调用String.trim().如果你只想修剪前导空格和尾随空格(而不是所有前导空格和尾随空格),可以使用一个名为的Apache commons方法StringUtils.strip(String, String)来执行此操作; 称之为" "第二个参数.

您尝试过的代码存在许多错误,并且从根本上来说效率低下.如果您真的想自己实现,那么您应该:

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

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


1 - 实际上,这取决于实施String.对于某些实现,将不进行复制,对于其他实现,则进行单个复制.但要么是你的方法的改进,需要至少2份,如果有任何字符需要修剪,则更多.


Ton*_*nis 14

String.trim()很老,至少对java 1.3来说.你没有这个?