簡體   English   中英

檢查字符串是否為字母數字

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM