确定字符串是否仅由某些字符组成

时间:2013-11-05 23:03:51

标签: java string

所以我希望能够确定一个字符串是否只由某个字符组成。

说我想看看一个字符串是否仅由a,b,c组成我将如何做

可行的字符串示例 a,aaaa,abc,cc,abc,cba

任何帮助都会很棒

4 个答案:

答案 0 :(得分:1)

答案 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");
    }
}