为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

素胚勾勒不出你 2022-06-15 14:47:02
当我从数据库表中获取字符串时,下面给出的字符串。#$%^&*\n\r\t公司;姓名; xyz; 美国广播公司;pqr; \t\r@#$()-上面的示例字符串开头和结尾有非字母数字字符,所以我想删除给定字符串的所有非字母数字粗体字符开头和结尾用简单的语言我想要这个字符串:“公司;名称;xyz;abc;pqr; ”
查看完整描述

2 回答

?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

你可以这样做:


    String example="#$%^&*\n\r\t company; name; xyz; abc; pqr; \t\r@#$()-";

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

    System.out.println(result);

它打印:


公司; 姓名; xyz; 美国广播公司;pqr;


它可以用两个替换来替换 - 用于字符串的开头,然后用于结尾:


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


查看完整回答
反对 回复 2022-06-15
?
子衿沉夜

TA贡献1828条经验 获得超3个赞

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


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]


查看完整回答
反对 回复 2022-06-15
  • 2 回答
  • 0 关注
  • 102 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信