Java 中的 Android .NET Trim 功能?

发布于 2024-09-13 08:40:59 字数 180 浏览 3 评论 0原文

在 Android 应用程序中,我正在寻找 .NET 字符串函数 [Trim('aaa')] 的功能,该函数将从字符串中修剪掉文本“aaa”。我不认为这在 Java 中是原生可用的,而且我还没有在 Android Java textutil 库中看到该功能。

有没有一种简单的方法可以让 Java 应用程序从字符串中删除一组字符?

In an Android app, I am looking for the functionality of the .NET string function [Trim('aaa')] which will trim off the text "aaa" off a string. I don't think this is natively available in Java and I haven't seen that functionality in Android Java textutil library.

Is there an easy way to have a Java app trim a set of characters from the string?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

牵你手 2024-09-20 08:40:59

正则表达式修剪

规范尚不​​清楚,但您可以使用正则表达式来执行此操作。

下面是一个示例:

    // 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 是正则表达式中的“输入末尾的数字序列”。

参考文献


文字修剪

如果您只需要文字后缀/前缀修剪,则不需要正则表达式。这是一个例子:

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

Regex trimming

The specification isn't clear, but you can use regular expression to do this.

Here's an example:

    // 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

The anchors \A and \Z match the beginning and end of the input respectively. | is alternation. \d is the shorthand for the digit character class. + is "one-or-more-of" repetition specifier. Thus, the pattern \d+\Z is regex-speak for "sequence of digits at the end of the input".

References


Literal trimming

If you just want a literal suffix/prefix chopping, then no regex is required. Here's an example:

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);
}

Then we can have:

    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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文