A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 宋文轩 黑马帝   /  2011-11-10 16:15  /  3954 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 宋文轩 于 2011-11-10 16:40 编辑

请教 String类中的trim()方法可以去除回车符吗?谢谢大家。

6 个回复

倒序浏览
自己顶一下,有人解答一下吗?
回复 使用道具 举报
咖啡 黑马帝 2011-11-10 23:14:58
藤椅
String.Trim()方法会去除字符串两端,不仅仅是空格字符,它总共能去除25种字符:
('/t', '/n', '/v', '/f', '/r', ' ', '/x0085', '/x00a0', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '?', '/u2028', '/u2029', ' ', '?')

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1

查看全部评分

回复 使用道具 举报
绿影 黑马帝 2011-11-11 01:21:19
板凳
他实现的方式就是由于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方法不仅仅可以去掉我们平常说的空格,还可以去掉编码值小于' '的编码值的字符。

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 郭学文 于 2011-11-11 02:13 编辑

可以

你可以测试一下
trim一共可以去掉这些字符:
  1. for (int i = 0; i <=32; i++) {
  2.                         System.out.print((char)i);
  3.                 }
复制代码

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1

查看全部评分

回复 使用道具 举报
  1. ArrayList<Character> cccArrayList= new ArrayList<Character>();
  2.                 for (int i = 0; i <=32; i++) {
  3.                         cccArrayList.add((char)i);
  4.                 }
  5.                 System.out.println(cccArrayList.contains('\r'));
  6.                 System.out.println(cccArrayList.contains('\n'));
复制代码
结果都为true
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马