我正在为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)来执行此操作; 称之为" "第二个参数.
您尝试过的代码存在许多错误,并且从根本上来说效率低下.如果您真的想自己实现,那么您应该:
String.substring(from, end)以创建包含要保留的字符的新字符串.这种方法避免了复制任何字符1.
1 - 实际上,这取决于实施String.对于某些实现,将不进行复制,对于其他实现,则进行单个复制.但要么是你的方法的改进,需要至少2份,如果有任何字符需要修剪,则更多.