如何在Java中查找特定字符

如何在Java中查找特定字符,java,string,substring,contains,Java,String,Substring,Contains,我在java中有一个类似a>5和b=7的字符串 当我检查字符串是否包含时,和= 如何将支票仅限于特定字符 如何使用匹配函数?布尔值=模式。编译(“>”).matcher(“a>5”).find();//返回true布尔值=Pattern.compile(“>”).matcher(“a>5”).find();//返回true您的错误是,您将词法实体=视为一个“字符”。它会不止一次地叮咬您,因为实际上有两个字符,和=,而且确实在这里。因此,根据您的需要,答案可能会有所不同 "your string

我在java中有一个类似
a>5和b=7的字符串

当我检查字符串是否包含
时,
=

如何将支票仅限于特定字符


如何使用
匹配
函数?

布尔值=模式。编译(“>”).matcher(“a>5”).find();//返回true

布尔值=Pattern.compile(“>”).matcher(“a>5”).find();//返回true

您的错误是,您将词法实体
=
视为一个“字符”。它会不止一次地叮咬您,因为实际上有两个字符,
=
,而且
确实在这里。因此,根据您的需要,答案可能会有所不同

"your string >".contains(">");// returns true
为什么不想看到找到的
=


您对
>
的什么用法感兴趣?例如,
一些文本
是否是您希望允许的适当字符串?

您的错误是,您认为一个词汇实体,
=
,作为一个“字符”。它会不止一次地咬您,因为实际上有两个字符,
=
,而且
确实在这里。因此,根据您的需要,答案可能会有所不同

为什么不想看到找到的
=


您对
>
的什么用法感兴趣?例如,
某些文本
是否是您希望允许的适当字符串?

您希望区分大于和大于或等于。为什么不写一个返回运算符的方法呢

enum Operator { 
...
}

public Operator getOperator(String s) { 

    if(s.contains(">=")) { 
       return Operator.GREATER_THAN_OR_EQUAL_TO;
    } else if (s.contains(">") {
       return Operator.GREATER_THAN;
    }

}

如果输入可以是包含多个运算符的复杂表达式,而不是
contains
,请尝试使用
indexOf(…)
并向前看一个字符作为“=”。

要区分大于和大于或等于。为什么不写一个返回运算符的方法呢

enum Operator { 
...
}

public Operator getOperator(String s) { 

    if(s.contains(">=")) { 
       return Operator.GREATER_THAN_OR_EQUAL_TO;
    } else if (s.contains(">") {
       return Operator.GREATER_THAN;
    }

}

如果输入可以是包含多个运算符的复杂表达式,而不是
contains
,请尝试使用
indexOf(…)
并向前看一个字符作为“=”。

我只是根据更新的规范将其组合在一起。基本上是一个真正简单的解析器,而不是机械地创建的:(而且我不擅长在早上7点命名哦)

公共类主{
公共静态void main(字符串[]args){
String test=“a>b>=c>x”;
主管道m=新主管道(试验);
System.out.println(m.getTokenNumber());
test=“aasdfasdf asdfdasf”;
m=新主管道(试验);
System.out.println(m.getTokenNumber());
}
私有字符串输入;
私人国际邮政局;
公用主(字符串输入){
这个输入=输入;
pos=0;
}
公共令牌号getTokenNumber(){
TokenNumber TokenNumber=新的TokenNumber();
令牌t=nextToken();
while(t!=Token.NONE){
tokenNumber.addToken(t);
t=nextToken();
}
返回令牌号;
}
私有令牌nextToken(){
而(pos')pos++;
if(pos==input.length())返回Token.NONE;
pos++;
if(pos==input.length()| | input.charAt(pos)!='=')返回Token.great;
返回令牌。大于等于;
}
枚举令牌{
更大,更大,等于零;
}
静态类标记号{
公共利益更大;
公共int大于;
公共无效添加令牌(令牌t){
如果(t==Token.GREATER)大于++;
否则大于++;
断言t!=Token.NONE;
}
公共字符串toString(){
返回String.format(“大于:%d%n大于:%d”,大于,大于);
}
}
}

我只是根据更新后的规范将其组合在一起。基本上是一个真正简单的解析器,而不是机械地创建的:(而且我不擅长在早上7点命名哦)

公共类主{
公共静态void main(字符串[]args){
String test=“a>b>=c>x”;
主管道m=新主管道(试验);
System.out.println(m.getTokenNumber());
test=“aasdfasdf asdfdasf”;
m=新主管道(试验);
System.out.println(m.getTokenNumber());
}
私有字符串输入;
私人国际邮政局;
公用主(字符串输入){
这个输入=输入;
pos=0;
}
公共令牌号getTokenNumber(){
TokenNumber TokenNumber=新的TokenNumber();
令牌t=nextToken();
while(t!=Token.NONE){
tokenNumber.addToken(t);
t=nextToken();
}
返回令牌号;
}
私有令牌nextToken(){
而(pos')pos++;
if(pos==input.length())返回Token.NONE;
pos++;
if(pos==input.length()| | input.charAt(pos)!='=')返回Token.great;
返回令牌。大于等于;
}
枚举令牌{
更大,更大,等于零;
}
静态类标记号{
公共利益更大;
公共int大于;
公共无效添加令牌(令牌t){
如果(t==Token.GREATER)大于++;
否则大于++;
断言t!=Token.NONE;
}
公共字符串toString(){
返回String.format(“大于:%d%n大于:%d”,大于,大于);
}
}
}

它仍然会在
上失败-也就是说,没有失败,但没有给出,呃,“正确”的答案:)是的,他并没有对数据说太多。如果是标记数据,则他会使用当前的实现。@AmirAfghani我认为如果s同时包含>=和>,则不会给出正确的答案。您能详细说明吗?@SRK您的规范在这一点上并不具体。因为您还没有定义如果字符串同时包含
=
时应该发生什么