想要对 Java String 进行左右修剪

新手上路,请多包涵

我有 Java String,它在左右两侧都包含空格。我想从两侧删除空白。

我试过的代码…

 public class Test {

    public static void main(String args[])
    {
        String abc = "  Amebiasis  ";
        System.out.println(abc +" length "+abc.length());
        System.out.println(rtrim(abc)+" length "+rtrim(abc).length());
        System.out.println(ltrim(abc)+" length "+ltrim(abc).length());

        String ltrim = abc.replaceAll("^\\s+","");
        String rtrim = abc.replaceAll("\\s+$","");

        System.out.println("ltrim"+ltrim);
        System.out.println("rtrim"+rtrim);
    }

    public static String rtrim(String s) {
        int i = s.length()-1;
        while (i >= 0 && Character.isWhitespace(s.charAt(i))) {
            i--;
        }
        return s.substring(0,i+1);
    }

    public static String ltrim(String s) {
        int i = 0;
        while (i < s.length() && Character.isWhitespace(s.charAt(i))) {
            System.out.println("s.charAt(i)  "+s.charAt(i));
            i++;
        }
        return s.substring(i);
    }
}

我得到的输出…

   Amebiasis   length 13
  Amebiasis length 11
  Amebiasis   length 13
ltrim  Amebiasis
rtrim  Amebiasis

不知何故,它不会删除空白。我的代码有什么问题,请帮助我。

原文由 Vijay 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 360
2 个回答

默认可用的 trim()

 String abc = "  Amebiasis  ";
System.out.println(""+abc.trim());

原文由 newuser 发布,翻译遵循 CC BY-SA 3.0 许可协议

我已经尝试了您的两个功能 ltrimrtrim 并且它们工作正常。如果我没理解错的话,您会期望这些函数会就地更改字符串的内容。这是不可能的,因为 Java 中的字符串是 不可变 的。如果您希望从字符串中删除空格,然后继续使用字符串的删除版本,您需要分配值 rtrimltrim 返回给你的 abc 变量:

 String abc = "  Amebiasis  ";
abc = rtrim(abc); // abc now equals to "  Amebiasis"
abc = ltrim(abc); // abc now equals to "Amebiasis"

原文由 aga 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题