检查字符串是否为字母数字

时间:2017-05-15 10:41:48

标签: android

我试图检查字符串是否是字母数字。我在其他帖子中尝试过很多东西,但无济于事。我尝试了StringUtils.isAlphanumeric(),一个来自Apache Commons的库,但失败了。我也从link尝试了正则表达式,但这也没有用。有没有一种方法来检查字符串是否是字母数字并根据它返回true或false?

btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                String text = fullnameet.getText().toString();
                String numRegex   = ".*[0-9].*";
                String alphaRegex = ".*[A-Z].*";

                if (text.matches(numRegex) && text.matches(alphaRegex)) {
                    System.out.println("Its Alphanumeric");
                }else{
                    System.out.println("Its NOT Alphanumeric");
                }
            }
        });

5 个答案:

答案 0 :(得分:5)

如果您想确定您的字符串是字母数字并且包含数字和字母,那么您可以使用以下逻辑:

.*[A-Za-z].*   check for the presence of at least one letter
.*[0-9].*      check for the presence of at least one number
[A-Za-z0-9]*   check that only numbers and letters compose this string

String text = fullnameet.getText().toString();
if (text.matches(".*[A-Za-z].*") && text.matches(".*[0-9].*") && text.matches("[A-Za-z0-9]*")) {
    System.out.println("Its Alphanumeric");
} else {
    System.out.println("Its NOT Alphanumeric");
}

请注意,我们可以使用单个正则表达式来处理这个问题,但它可能会比上面的答案更详细,也可能更难维护。

答案 1 :(得分:1)

试试这个

 btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Pattern p = Pattern.compile("[^a-zA-Z0-9]");
            boolean hasSpecialChar = p.matcher(edittext.getText().toString()).find();

            if (!edittext.getText().toString().trim().equals("")) {
                if (hasSpecialChar) {
                    Toast.makeText(MainActivity.this, "not Alphanumeric", Toast.LENGTH_SHORT).show();
                } else {
                    Toast.makeText(MainActivity.this, "Its Alphanumeric", Toast.LENGTH_SHORT).show();
                }
            } else {
                Toast.makeText(MainActivity.this, "Empty value of edit text", Toast.LENGTH_SHORT).show();
            }

        }
    });

答案 2 :(得分:0)

来自here

的原文

String myString =" qwerty123456&#34 ;; 的System.out.println(myString.matches(" [A-ZA-Z0-9] +&#34));

String myString = "qwerty123456";

if(myString.matches("[A-Za-z0-9]+"))
{
    System.out.println("Alphanumeric");
}
if(myString.matches("[A-Za-z]+"))
{
    System.out.println("Alphabet");

}

答案 3 :(得分:0)

这是检查字符串是否为字母数字的代码。有关详细信息,请查看Fastest way to check a string is alphanumeric in Java

public class QuickTest extends TestCase {

    private final int reps = 1000000;



    public void testRegexp() {
        for(int i = 0; i < reps; i++)
            ("ab4r3rgf"+i).matches("[a-zA-Z0-9]");
    }



    public void testIsAlphanumeric2() {
        for(int i = 0; i < reps; i++)
            isAlphanumeric2("ab4r3rgf"+i);
    }



    public boolean isAlphanumeric2(String str) {
        for (int i=0; i<str.length(); i++) {
            char c = str.charAt(i);
            if (c < 0x30 || (c >= 0x3a && c <= 0x40) || (c > 0x5a && c <= 0x60) || c > 0x7a)
                return false;
        }
        return true;
    }

}

答案 4 :(得分:0)

虽然有很多方法可以给这只猫剥皮,但我更喜欢将这些代码包装到可重用的扩展方法中,这样以后的工作就变得微不足道了。使用扩展方法时,您还可以避免使用 RegEx,因为它比直接字符检查慢。我喜欢使用 Extensions.cs NuGet 包中的扩展。它使这项检查变得如此简单:

  1. https://www.nuget.org/packages/Extensions.cs 包添加到您的项目中。
  2. 在代码顶部添加“using Extensions;”。
  3. "smith23@".IsAlphaNumeric() 将返回 False 而 "smith23".IsAlphaNumeric() 将返回 True。默认情况下,.IsAlphaNumeric() 方法会忽略空格,但它也可以被覆盖,这样 "smith 23".IsAlphaNumeric(false) 将返回 False,因为空格不被视为字母表的一部分。
  4. 其余代码中的所有其他检查都只是MyString.IsAlphaNumeric()

您的示例代码将变得如此简单:

using Extensions;

btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            String text = fullnameet.getText().toString();
            //String numRegex   = ".*[0-9].*";
            //String alphaRegex = ".*[A-Z].*";

            //if (text.matches(numRegex) && text.matches(alphaRegex)) {
            if (text.IsAlphaNumeric()) {
                System.out.println("Its Alphanumeric");
            }else{
                System.out.println("Its NOT Alphanumeric");
            }
        }
    });