代码之家  ›  专栏  ›  技术社区  ›  Ian Vink

安卓.NET在Java中的修剪功能?

  •  2
  • Ian Vink  · 技术社区  · 14 年前

    在Android应用程序中,我正在寻找.NET字符串函数[trim('a a a')]的功能,该函数将删除字符串中的文本“a a a”。我认为这在Java中是不可用的,我还没有在Android Java文本库中看到这种功能。

    有没有一种简单的方法让Java应用程序从字符串中剪裁出一组字符?

    2 回复  |  直到 14 年前
        1
  •  3
  •   polygenelubricants    14 年前

    正则修剪

    规范不清楚,但您可以使用正则表达式来实现这一点。

    下面是一个例子:

        // trim digits from end
        System.out.println(
            "123a456z789".replaceAll("\\d+\\Z", "")
        );
        // 123a456z
    
        // trim digits from beginning
        System.out.println(
            "123a456z789".replaceAll("\\A\\d+", "")
        );
        // a456z789
    
        // trim digits from beginning and end
        System.out.println(
            "123a456z789".replaceAll("\\A\\d+|\\d+\\Z", "")
        );
        // a456z
    

    \A \Z 分别匹配输入的开始和结束。 | 是交替的。 \d 是数字字符类的简写。 + 是“一个或多个”重复说明符。因此,模式 \d+\Z regex是否表示“输入结束时的数字序列”。

    工具书类


    文字剪裁

    如果只需要一个文本后缀/前缀切碎,那么不需要regex。下面是一个例子:

    public static String chopPrefix(String s, String prefix) {
        if (s.startsWith(prefix)) {
            return s.substring(prefix.length());
        } else {
            return s;
        }
    }
    public static String chopSuffix(String s, String suffix) {
        if (s.endsWith(suffix)) {
            return s.substring(0, s.length() - suffix.length());
        } else {
            return s;
        }
    }
    public static String chopPresuffix(String s, String presuffix) {
        return chopSuffix(chopPrefix(s, presuffix), presuffix);
    }
    

    然后我们可以有:

        System.out.println(
            chopPrefix("abcdef", "abc")
        ); // def
    
        System.out.println(
            chopSuffix("abcdef", "ef")
        ); // abcd
    
        System.out.println(
            chopPresuffix("abcdef", "cd")
        ); // abcdef
    
        System.out.println(
            chopPresuffix("abracadabra", "abra")
        ); // cad
    
        2
  •  6
  •   thelost    14 年前

    使用 trim replaceAll .