将字符串中的不平等符号拆分为标记?(Java/Regex)
我试图在Java中将一个算术公式字符串拆分为标记。这些方程还包括不等式符号!=,=,>,我会用StringTokenizer。输出将字符串中的不平等符号拆分为标记?(Java/Regex),java,regex,equation,Java,Regex,Equation,我试图在Java中将一个算术公式字符串拆分为标记。这些方程还包括不等式符号!=,=,>,我会用StringTokenizer。输出 [(,2.0,*,2.0,检查以下解决方案是否对您有所帮助 这里,我假设输入是一个算术方程(不是任何其他字符串),并且只包含整数,即2,而不是小数,即2.0 private static void method(String str){ Pattern pattern1 = Pattern.compile("[^\\d]+");
[(,2.0,*,2.0,检查以下解决方案是否对您有所帮助 这里,我假设输入是一个算术方程(不是任何其他字符串),并且只包含整数,即2,而不是小数,即2.0
private static void method(String str){
Pattern pattern1 = Pattern.compile("[^\\d]+");
Pattern pattern2 = Pattern.compile("[\\d]+");
Matcher matcher1 = pattern1.matcher(str);
Matcher matcher2 = pattern2.matcher(str);
List<String> list = new ArrayList<String>();
while(matcher1.find()){
list.add(matcher1.group(0));
if(matcher2.find()){
list.add(matcher2.group(0));
}
}
System.out.println("Token list is::");
for(String st:list){
System.out.print(st+",");
}
}
私有静态无效方法(字符串str){
Pattern pattern1=Pattern.compile(“[^\\d]+”);
Pattern pattern2=Pattern.compile(“[\\d]+”);
Matcher matcher1=pattern1.Matcher(str);
Matcher matcher2=pattern2.Matcher(str);
列表=新的ArrayList();
while(matcher1.find()){
list.add(matcher1.group(0));
if(matcher2.find()){
list.add(matcher2.group(0));
}
}
System.out.println(“令牌列表为:”);
for(字符串st:list){
系统输出打印(st+“,”);
}
}
如果我通过(2*2我想,你需要一个正则表达式来检查
使用应该使用正则表达式来查找\d(谢谢!我能解释一下代码中发生了什么吗?据我所知,第一个模式收集所有数字,而第二个模式收集所有其他数字,对吗?是的,模式1代表所有非数字字符,而模式2代表所有数字字符。使用循环,根据这些数字检查传递的字符串模式,当找到匹配项时,它将存储在列表中。因此,在循环结束时,列表包含等式的所有标记。@Dylan,如果您对我的解释感到满意,请单击左上角的勾号接受此答案。
StreamTokenizer tokenizer = new StreamTokenizer(new StringReader("(2*2<=5)"));
List<String> expression = new ArrayList<>();
try {
while (tokenizer.nextToken() != StreamTokenizer.TT_EOF) {
switch(tokenizer.ttype) {
case StreamTokenizer.TT_NUMBER:
expression.add(String.valueOf(tokenizer.nval));
break;
case StreamTokenizer.TT_WORD:
expression.add(tokenizer.sval);
break;
default: // operator
expression.add(String.valueOf((char) tokenizer.ttype));
}
}
} catch (IOException e) {
e.printStackTrace();
}
System.out.println( Arrays.toString(expression.toArray()));
private static void method(String str){
Pattern pattern1 = Pattern.compile("[^\\d]+");
Pattern pattern2 = Pattern.compile("[\\d]+");
Matcher matcher1 = pattern1.matcher(str);
Matcher matcher2 = pattern2.matcher(str);
List<String> list = new ArrayList<String>();
while(matcher1.find()){
list.add(matcher1.group(0));
if(matcher2.find()){
list.add(matcher2.group(0));
}
}
System.out.println("Token list is::");
for(String st:list){
System.out.print(st+",");
}
}