检查字符串是否仅包含字母数字字符的最快方法是什么。
我有一些代码会占用大量CPU,我想知道是否有比使用预编译正则表达式更快的方法。
我已经编写了使用正则表达式(根据其他答案)与不使用正则表达式进行比较的测试。在运行Java 1.6的四核OSX10.8计算机上进行的测试
有趣的是,使用正则表达式比手动迭代字符串要慢5到10倍。此外,该isAlphanumeric2()
功能比的速度略快isAlphanumeric()
。一种支持允许扩展Unicode数字的情况,另一种支持仅允许标准ASCII数字的情况。
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 testIsAlphanumeric() {
for(int i = 0; i < reps; i++)
isAlphanumeric("ab4r3rgf"+i);
}
public void testIsAlphanumeric2() {
for(int i = 0; i < reps; i++)
isAlphanumeric2("ab4r3rgf"+i);
}
public boolean isAlphanumeric(String str) {
for (int i=0; i<str.length(); i++) {
char c = str.charAt(i);
if (!Character.isLetterOrDigit(c))
return false;
}
return true;
}
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;
}
}
问题内容: 我有一个字符串“ BC + D * E-”。我想检查字符串的每个字符是否为字母。我尝试使用isLetter(),但它甚至将=,*和-都视为字母。请您帮我一下。谢谢 问题答案: 尝试
我想删除字符串末尾的所有数字和符号。得到: 我可以剥离数字,但不能剥离。我该怎么做? 这是我到目前为止的代码:
问题:我在用Java玩,我试图计算字符串中连续的“字符”。 例子: 上面的代码返回输入的整数值的二进制字符串。如果我们输入数字5,将返回: 101 现在,我希望遍历字符串,并检查字符串中是否有任何连续的1。 我不知道如何检查这个。我尝试了以下方法: 但这显然会抛出一个ArrayIndexOutOfBounds,因为将产生一个大于数组长度的数字。 提前感谢您的回答。 欧文
问题内容: 我正在处理JavaScript的性能问题。所以我只想问:检查一个字符串是否包含另一个子字符串的最快方法是什么(我只需要布尔值)?您能否提出您的想法和示例代码片段? 问题答案: 您有两个可能性: 正则表达式: // or /word/.test(str) : 更新: 不能肯定地说哪种方法更快。浏览器之间的差异是巨大的。虽然在Chrome 10中似乎更快,但在Safari 5 中显然比任何
问题内容: 这个想法是读取String并确认它不包含任何数字字符。因此,“ smith23”之类的内容将不被接受。 问题答案: 你想要什么?速度还是简单?为了提高速度,请选择基于循环的方法。为简单起见,请使用一种基于内衬RegEx的方法。 速度 简单
本文向大家介绍如何检查字符串中的字符是否为Python中的字母?,包括了如何检查字符串中的字符是否为Python中的字母?的使用技巧和注意事项,需要的朋友参考一下 您可以使用字符串类中的方法。它检查字符串是否仅包含字母。您也可以使用它来检查字符是否为字母。例如,如果您要检查第5个索引处的char是否为字母, 您也可以检查整个字符串,无论它们是否为字母。例如,