当我从数据库表中获取字符串时,下面给出的字符串
例如#$%^&* \ n \ r 公司;名称; xyz; abc; pqr; \ t \ r @#$()-
示例字符串的开头和结尾具有非字母数字字符,因此我想删除给定字符串的所有非字母数字粗体字符开始和结尾
用简单的语言我想要这个字符串:“ company; name; xyz; abc; pqr; ”
答案 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]