所以我希望能够确定一个字符串是否只由某个字符组成。
说我想看看一个字符串是否仅由a,b,c
组成我将如何做
可行的字符串示例
a,aaaa,abc,cc,abc,cba
等
任何帮助都会很棒
答案 0 :(得分:1)
Apache StringUtils
救援 - http://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html#containsOnly(java.lang.CharSequence, java.lang.String)
答案 1 :(得分:1)
public boolean containsOnly(String str, String certain){
return str.matches("[" + certain + "]*");
}
这将始终匹配空字符串,如果您想更改它,只需将*
更改为+
即可。
这使用正则表达式并且非常简单。但逻辑并未充分展示。基本上,它确保字符串匹配'确定'中的任何字符组合。
containsOnly("aaaa", "abc") -> True
containsOnly("abca", "abc") -> True
containsOnle("aaaz", "abc") -> False
答案 2 :(得分:0)
试试这个:
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
当然,你可以使用正则表达式,但这并不是那么有趣。
答案 3 :(得分:0)
这将告诉您是否有违规字符。
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");
}
}