[英]Check if string is Alphanumeric
D中是否有标准功能来检查字符串是否为字母数字? 如果不是,最有效的方法是什么? 我猜有比遍历字符串和检查字符是否在范围内更好的方法吗?
我不认为它有一个单一的预制函数,但是您可以组成两个phobos函数(imo一样好!):
import std.algorithm, std.ascii;
bool good = all!isAlphaNum(your_string);
我认为这会执行不必要的utf解码,因此不会达到最大的效率,但是由于字符串肯定很短,因此无论如何这都无关紧要。 但是,如果这对你很可能使用.representation
(从std.string IIRC)或foreach(char c; your_string) isAlphaNum(c);
你自己会快一点。
我认为Adam D. Ruppe的解决方案可能是更好的解决方案,但这也可以使用正则表达式来完成。 您可以在此处查看正则表达式的解释。
import std.regex;
import std.stdio;
void main()
{
// Compile-time regexes are preferred
// auto alnumRegex = regex(`^[A-Za-z][A-Za-z0-9]*$`);
// Backticks represent raw strings (convenient for regexes)
enum alnumRegex = ctRegex!(`^[A-Za-z][A-Za-z0-9]*$`);
auto testString = "abc123";
auto matchResult = match(testString, alnumRegex);
if(matchResult)
{
writefln("Match(es) found: %s", matchResult);
}
else
{
writeln("Match not found");
}
}
当然,这也仅适用于ASCII。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.