dlang语言怎么实现分割一个字符串为数组比如s_one-two我指定分割字符为_和-则结果为sonetwo如果指定分隔符仅为_则结果为sone-two有几种实现方式每种方式给出详细的完整代码
方式一:使用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);
}
运行结果与方式一相同
原文地址: http://www.cveoy.top/t/topic/flU9 著作权归作者所有。请勿转载和采集!