我试图检查字符串是否是字母数字。我在其他帖子中尝试过很多东西,但无济于事。我尝试了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");
}
}
});
答案 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 包中的扩展。它使这项检查变得如此简单:
using Extensions;
”。"smith23@".IsAlphaNumeric()
将返回 False 而 "smith23".IsAlphaNumeric()
将返回 True。默认情况下,.IsAlphaNumeric()
方法会忽略空格,但它也可以被覆盖,这样 "smith 23".IsAlphaNumeric(false)
将返回 False,因为空格不被视为字母表的一部分。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");
}
}
});