所以我希望能够确定一个字符串是否仅由某些字符组成。
假设我想看看一个字符串是否只由a,b,c
我怎么做
可以使用的字符串示例
a,aaaa,abc,cc,abc,cba
如下
任何帮助都是极好的
public boolean containsOnly(String str, String certain){
return str.matches("[" + certain + "]*");
}
这将始终匹配一个空字符串,如果您想更改它,只需将 更改*
为+
。
这使用正则表达式并且非常简单。但是,逻辑并没有完全阐明。基本上,它确保字符串匹配“确定”中字符的任何组合。
containsOnly("aaaa", "abc") -> True
containsOnly("abca", "abc") -> True
containsOnle("aaaz", "abc") -> False
ApacheStringUtils
的救援 - http://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html#containsOnly(java.lang.CharSequence, java.lang.String)
这将告诉您是否有冒犯的角色。
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexMatch {
private static void match(String REGEX, String INPUT) {
Pattern p = Pattern.compile(REGEX);
Matcher m = p.matcher(INPUT);
int count = 0;
while (m.find()) {
count++;
System.out.println("\nMatch number: " + count);
System.out.println("start() : " + m.start());
System.out.println("end() : " + m.end());
System.out.println("group() : " + m.group());
}
}
public static void main(String[] args) {
match("[^abc]", "zbc");
}
}
尝试这个:
boolean onlyCertainCharacters(String str, String certainCharacters)
{
for(int i=0;i<str.length();i++) //Check each character in the String
{
if(certainCharacters.indexOf(str.substr(i,1))==-1) //Return false if the character isn't in the list of allowed characters
{
return false;
}
}
return true; //If we haven't returned yet, then all characters must match
}
用法:
onlyCertainCharacters("aaaa,"abc") //==true
onlyCertainCharacters("aaad,"abc") //==false
当然,您可以只使用正则表达式,但这没那么有趣。