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

qmb5sa22  于 2023-05-21  发布在  Android
关注(0)|答案(6)|浏览(273)

我正在检查一个字符串是否是字母数字。我尝试了其他帖子中给出的许多东西,但都无济于事。我尝试了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");
                }
            }
        });
wj8zmpe1

wj8zmpe11#

为Kotlin开发者转换https://stackoverflow.com/a/43977613/8370216这个答案为Kotlin扩展函数

fun String.isAlphaNumeric(): Boolean {
    return matches(".*[A-Za-z].*".toRegex()) && matches(".*[0-9].*".toRegex()) && matches("[A-Za-z0-9]*".toRegex())
}
fiei3ece

fiei3ece2#

如果你想确定你的字符串既包含字母数字 *,又包含数字和字母,那么你可以使用以下逻辑:

.*[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");
}

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

zqdjd7g9

zqdjd7g93#

原文来自here
String myString =“qwerty123456”; System.out.println(myString.matches(“[A-Za-z0-9]+”));

String myString = "qwerty123456";

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

}

k5ifujac

k5ifujac4#

试试这个

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();
            }

        }
    });
hxzsmxv2

hxzsmxv25#

这是检查字符串是否为字母数字的代码。更多详情请查看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;
    }

}
aemubtdh

aemubtdh6#

虽然有很多方法可以剥下这只猫的皮,但我更喜欢将这些代码 Package 到可重用的扩展方法中,这样做就变得微不足道了。当使用扩展方法时,您还可以避免使用RegEx,因为它比直接的字符检查慢。我喜欢使用Extensions.cs NuGet包中的扩展。它使此检查简单如:
1.将https://www.nuget.org/packages/Extensions.cs包添加到项目中。
1.将“using Extensions;“添加到代码的顶部。

  1. "smith23@".IsAlphaNumeric()返回False,而"smith23".IsAlphaNumeric()返回True。默认情况下,.IsAlphaNumeric()方法忽略空格,但也可以重写它,使"smith 23".IsAlphaNumeric(false)返回False,因为空格不被视为字母表的一部分。
    1.其余代码中的每一个其他检查都是简单的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");
            }
        }
    });

相关问题