从开头和结尾删除非字母数字字符

时间:2019-02-12 08:06:40

标签: java

当我从数据库表中获取字符串时,下面给出的字符串
例如#$%^&* \ n \ r 公司;名称; xyz; abc; pqr; \ t \ r @#$()-

示例字符串的开头和结尾具有非字母数字字符,因此我想删除给定字符串的所有非字母数字粗体字符开始和结尾

用简单的语言我想要这个字符串:“ company; name; xyz; abc; pqr;

2 个答案:

答案 0 :(得分:2)

您可以这样做:

    String example="#$%^&*\n\r\t company; name; xyz; abc; pqr; \t\r@#$()-";
    String result = example.replaceAll("(^[^\\w;]+|[^\\w;]+$)", "");
    System.out.println(result);

它打印:

  

公司;名称; xyz; abc; pqr;

它可以替换为两个替换-字符串的开头,然后像这样的结尾:

   String result=example.replaceAll("^[^\\w;]+", "").replaceAll("[^\\w;]+$", ""));

答案 1 :(得分:0)

正则表达式的另一种方法是迭代字符串的字符,然后找出分别遇到的第一个字母数字值的开始索引和结束索引:

public static String trim(String input) {
    int length = input.length(), start = 0, end = length;

    // iterate from the start
    // until the first alphanumeric char is encountered
    while (start < length && notAlphaNumeric(input.charAt(start++))) {}
    start--;

    // iterate from the end
    // until the first alphanumeric char is encountered
    while (0 < end && notAlphaNumeric(input.charAt(--end))) {}
    end++;

    // return the original string if nothing has changed
    if (start == 0 && end == length) return input;

    // return an empty string if the indices passed one another
    if (start >= end) return "";

    // else return the substring from start to end
    return input.substring(start, end);
}

private static boolean notAlphaNumeric(char c) {
    return c != ';' && (c < '0' || c > '9') && (c < 'A' || c > 'Z') && (c < 'a' || c > 'z');
}

我定义为字母数字的值与此正则表达式组匹配:[;0-9a-zA-Z]