方式一:使用split函数实现

使用split函数可以方便地将一个字符串按照指定的分隔符分割成一个数组。

import std.stdio;

void main()
{
    string str = "s_one-two";
    char[] delims = ['_', '-'];
    string[] arr = str.splitAny(delims);
    writeln(arr);
}

运行结果为:

["s", "one", "two"]

方式二:使用正则表达式实现

使用正则表达式可以更加灵活地指定分隔符,例如只分割以_或-开头的字符串。

import std.stdio;
import std.regex;

void main()
{
    string str = "s_one-two";
    Regex regex = new Regex(`[_-]\w+`);
    auto matches = regex.allMatches(str);
    string[] arr;
    foreach (match; matches)
    {
        arr ~= match.hit[1 .. $];
    }
    writeln(arr);
}

运行结果与方式一相同。

方式三:手动实现分割函数

手动实现分割函数可以更加灵活地控制分割的行为,例如支持多个分隔符、忽略连续分隔符等。

import std.stdio;

string[] split(string str, char[] delims)
{
    string[] arr;
    bool in_delim = true;
    size_t start = 0;
    foreach (i, c; str)
    {
        if (delims.canFind(c))
        {
            if (!in_delim)
            {
                arr ~= str[start .. i];
                in_delim = true;
            }
            start = i + 1;
        }
        else
        {
            in_delim = false;
        }
    }
    if (!in_delim)
    {
        arr ~= str[start .. $];
    }
    return arr;
}

void main()
{
    string str = "s_one-two";
    char[] delims = ['_', '-'];
    string[] arr = split(str, delims);
    writeln(arr);
}

运行结果与方式一相同

dlang语言怎么实现分割一个字符串为数组比如s_one-two我指定分割字符为_和-则结果为sonetwo如果指定分隔符仅为_则结果为sone-two有几种实现方式每种方式给出详细的完整代码

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

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