手动修剪 Java 中的字符串(没有 String.trim())

Manually trimming a string in Java (without String.trim())

我一直在考虑不使用 String.trim() 来做这个的想法。我做了一个修剪前导和尾随空格的方法,如下所示:

public static String removeLeadingAndTrailingSpaces(String s) {
    StringBuilder sb = new StringBuilder();
    int i = 0;

    while (s.charAt(i) == ' ') {
        i++;
    }

    for (; i < s.length(); i++) {
        sb.append(s.charAt(i));
    }

    // aux is the string with only leading spaces removed
    String aux = sb.toString();
    int j = aux.length() - 1;

    while (aux.charAt(j) == ' ') {
        j--;
    }

    // now both leading and trailing spaces have been removed
    String result = aux.substring(0, j + 1);

    return result;
}

我已经测试过了,它 100% 有效。但是,我不认为这是最有效或最实用的实施方式。我还能怎么做呢?我觉得不使用额外的变量 auxj 也可以做到,但我想不出办法。

只需从末尾检查 s 以确定尾随白色 space 的起始位置和 return s 的子字符串。不需要 sbaux:

public static String removeLeadingAndTrailingSpaces(String s) {
    int end = s.length();
    int i = 0;

    while (i < end && s.charAt(i) == ' ') {
        i++;
    }

    while (end > i && s.charAt(end - 1) == ' ') {
        end--;
    }

    return end> i ? s.substring(i, end) : "";
}

为了更接近 trim(),您需要检查所有白色 space 字符,而不仅仅是 ' '.

要删除空格,请使用 myString.replace(" ","");

感谢和问候, 迪利普 D