方式一:

使用iconv函数进行转换

import std.conv;
import std.string;
import core.stdc.iconv;

string ascii(string str) {
    char[] outbuf = new char[1024];
    char[] inbuf = str.dup.toUTF8();
    char* inptr = inbuf.ptr;
    char* outptr = outbuf.ptr;
    size_t inlen = inbuf.length;
    size_t outlen = outbuf.length;
    iconv_t cd = iconv_open("ASCII//TRANSLIT", "UTF-8");
    iconv(cd, &inptr, &inlen, &outptr, &outlen);
    iconv_close(cd);
    return to!string(outbuf[0 .. outptr - outbuf.ptr]);
}

void main() {
    string str = "Taylor陈发会";
    string asciiStr = ascii(str);
    writeln(asciiStr); // TaylorChen Fa
}

方式二:

使用正则表达式进行替换

import std.regex;
import std.string;

string ascii(string str) {
    auto regex = std.regex.regex(r"[^\x00-\x7F]");
    return std.algorithm.reduce(str.split(regex), "", (r, s) => r ~ s.ascii());
}

void main() {
    string str = "Taylor陈发会";
    string asciiStr = ascii(str);
    writeln(asciiStr); // TaylorChen Fa
}

方式三:

使用Phobos库中的toAscii函数进行转换

import std.string;

string ascii(string str) {
    return str.toAscii();
}

void main() {
    string str = "Taylor陈发会";
    string asciiStr = ascii(str);
    writeln(asciiStr); // TaylorChen Fa
}
``
dlang语言实现IlluminateSupportStrascii$str函数将一个字符串的非ascii字符转为ascii字符比如Taylor陈发会被转为TaylorChen Fa 有多种方式把每种方式给出完整可以运行的代码包括包的引入

原文地址: https://www.cveoy.top/t/topic/fl5C 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录