黑马程序员技术交流社区
标题:
String类中的trim()方法问题
[打印本页]
作者:
宋文轩
时间:
2011-11-10 16:15
标题:
String类中的trim()方法问题
本帖最后由 宋文轩 于 2011-11-10 16:40 编辑
请教 String类中的trim()方法可以去除回车符吗?谢谢大家。
作者:
宋文轩
时间:
2011-11-10 19:40
自己顶一下,有人解答一下吗?
作者:
咖啡
时间:
2011-11-10 23:14
String.Trim()方法会去除字符串两端,不仅仅是空格字符,它总共能去除25种字符:
('/t', '/n', '/v', '/f', '/r', ' ', '/x0085', '/x00a0', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '?', '/u2028', '/u2029', ' ', '?')
作者:
绿影
时间:
2011-11-11 01:21
他实现的方式就是由于String底部是char数组则设定两个采用两个计数器st、len,初始值st=0,len=String.length(),然后从这个char数组两边依次分别拿出每个字符跟' '比较,只要小于或者等于它,就将st加1,len减1,知道不符合条件。说明已经将空格字符去掉完毕。下面是String中trim的源码,
public final class String
implements java.io.Serializable, Comparable<String>, CharSequence
{
private final char value[];
private final int offset;
private final int count;
private int hash; // Default to 0
public String(char value[]) {
int size = value.length;
this.offset = 0;
this.count = size;
this.value = Arrays.copyOf(value, size);
}
public String trim() {
int len = count;
int st = 0;
int off = offset; /* avoid getfield opcode */
char[] val = value; /* avoid getfield opcode */
while ((st < len) && (val[off + st] <= ' ')) {
st++;
}
while ((st < len) && (val[off + len - 1] <= ' ')) {
len--;
}
return ((st > 0) || (len < count)) ? substring(st, len) : this;
}
}
只是,小于' '还有那些char我搞清楚了给你补充!我还没弄明白。因为说明trim方法不仅仅可以去掉我们平常说的空格,还可以去掉编码值小于' '的编码值的字符。
作者:
郭学文
时间:
2011-11-11 02:13
本帖最后由 郭学文 于 2011-11-11 02:13 编辑
可以
你可以测试一下
trim一共可以去掉这些字符:
for (int i = 0; i <=32; i++) {
System.out.print((char)i);
}
复制代码
作者:
郭学文
时间:
2011-11-11 02:18
ArrayList<Character> cccArrayList= new ArrayList<Character>();
for (int i = 0; i <=32; i++) {
cccArrayList.add((char)i);
}
System.out.println(cccArrayList.contains('\r'));
System.out.println(cccArrayList.contains('\n'));
复制代码
结果都为true
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2