Java StringBuilder返回不需要的字符
我有一个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 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
?