Java StringBuilder返回不需要的字符

Java StringBuilder返回不需要的字符,java,Java,我有一个StringBuilder,我想获取除数字和后面的字符(+、-、*、/)之外的字符 我写了这段代码 StringBuilder sb = new StringBuilder(" a + 5 v 5 + 6 + 7"); String nieuw = trimOriginal(sb); System.out.println(nieuw); if(nieuw.matches("[a-zA-Z ]*\\d+.*")){ System.out.printl

我有一个StringBuilder,我想获取除数字和后面的字符(+、-、*、/)之外的字符

我写了这段代码

   StringBuilder sb = new StringBuilder(" a  + 5 v 5 + 6 + 7");
   String nieuw = trimOriginal(sb);
   System.out.println(nieuw);
   if(nieuw.matches("[a-zA-Z ]*\\d+.*")){
       System.out.println(nieuw);   

   }else {
       System.out.println("contains illegal charters");
   }

public static String trimOriginal(StringBuilder sb) {
        return sb.toString().trim();
    }
我还想打印a和v


有人能帮我吗

匹配的问题是它将尝试匹配整个字符串。将其更改为类似的方式应该可以:

    StringBuilder sb = new StringBuilder(" a  + 5 v 5 + 6 + 7");
    Pattern p = Pattern.compile("([^0-9 +*/-])");
    Matcher m = p.matcher(sb.toString());
    while(m.find())
    {
        System.out.println(m.group(1));
    }

产生:
av
匹配的问题是它将尝试匹配整个字符串。将其更改为类似的方式应该可以:

    StringBuilder sb = new StringBuilder(" a  + 5 v 5 + 6 + 7");
    Pattern p = Pattern.compile("([^0-9 +*/-])");
    Matcher m = p.matcher(sb.toString());
    while(m.find())
    {
        System.out.println(m.group(1));
    }
public static void main(String[] args) {
    StringBuilder sb = new StringBuilder(" a  + 5 v 5 + 6 + 7");
    String nieuw = trimOriginal(sb);
    System.out.println(nieuw);
    if (nieuw.matches("[^0-9+/*-]+")) {
        System.out.println(nieuw);

    } else {
        System.out.println("contains illegal charters");
    }
}

public static String trimOriginal(StringBuilder sb) {
    String buff = sb.toString();
    String[] split = buff.split("[0-9+/*-]+");
    StringBuilder b = new StringBuilder();
    for (String s : split) {
        b.append(s);
    }
    return b.toString().trim();
}

产生:
av
匹配的问题是它将尝试匹配整个字符串。将其更改为类似的方式应该可以:

    StringBuilder sb = new StringBuilder(" a  + 5 v 5 + 6 + 7");
    Pattern p = Pattern.compile("([^0-9 +*/-])");
    Matcher m = p.matcher(sb.toString());
    while(m.find())
    {
        System.out.println(m.group(1));
    }
public static void main(String[] args) {
    StringBuilder sb = new StringBuilder(" a  + 5 v 5 + 6 + 7");
    String nieuw = trimOriginal(sb);
    System.out.println(nieuw);
    if (nieuw.matches("[^0-9+/*-]+")) {
        System.out.println(nieuw);

    } else {
        System.out.println("contains illegal charters");
    }
}

public static String trimOriginal(StringBuilder sb) {
    String buff = sb.toString();
    String[] split = buff.split("[0-9+/*-]+");
    StringBuilder b = new StringBuilder();
    for (String s : split) {
        b.append(s);
    }
    return b.toString().trim();
}

产生:
av
匹配的问题是它将尝试匹配整个字符串。将其更改为类似的方式应该可以:

    StringBuilder sb = new StringBuilder(" a  + 5 v 5 + 6 + 7");
    Pattern p = Pattern.compile("([^0-9 +*/-])");
    Matcher m = p.matcher(sb.toString());
    while(m.find())
    {
        System.out.println(m.group(1));
    }
public static void main(String[] args) {
    StringBuilder sb = new StringBuilder(" a  + 5 v 5 + 6 + 7");
    String nieuw = trimOriginal(sb);
    System.out.println(nieuw);
    if (nieuw.matches("[^0-9+/*-]+")) {
        System.out.println(nieuw);

    } else {
        System.out.println("contains illegal charters");
    }
}

public static String trimOriginal(StringBuilder sb) {
    String buff = sb.toString();
    String[] split = buff.split("[0-9+/*-]+");
    StringBuilder b = new StringBuilder();
    for (String s : split) {
        b.append(s);
    }
    return b.toString().trim();
}
收益率:
av

public static void main(String[] args) {
    StringBuilder sb = new StringBuilder(" a  + 5 v 5 + 6 + 7");
    String nieuw = trimOriginal(sb);
    System.out.println(nieuw);
    if (nieuw.matches("[^0-9+/*-]+")) {
        System.out.println(nieuw);

    } else {
        System.out.println("contains illegal charters");
    }
}

public static String trimOriginal(StringBuilder sb) {
    String buff = sb.toString();
    String[] split = buff.split("[0-9+/*-]+");
    StringBuilder b = new StringBuilder();
    for (String s : split) {
        b.append(s);
    }
    return b.toString().trim();
}
输出

a    v
a    v
输出

a    v
a    v
输出

a    v
a    v
输出

a    v
a    v

hier
来自哪里?另外,如前所述,当存在不喜欢的字符时,您的代码只会输出一个错误。正则表达式应该匹配
a+5v5+6+7
?hier来自哪里?另外,如前所述,当存在不喜欢的字符时,您的代码只会输出一个错误。正则表达式应该匹配
a+5v5+6+7
?hier来自哪里?另外,如前所述,当存在不喜欢的字符时,您的代码只会输出一个错误。正则表达式应该匹配
a+5v5+6+7
?hier来自哪里?另外,如前所述,当存在不喜欢的字符时,您的代码只会输出一个错误。正则表达式应该匹配
a+5v5+6+7