Dlang 字符串分割成数组:使用 split 函数、正则表达式和手动实现
Dlang 语言:如何将字符串分割成数组
本文将探讨在 Dlang 语言中如何将一个字符串分割成数组,例如将字符串 's_one-two' 分割成 ['s', 'one', 'two'], 或者根据指定的分隔符分割成不同的结果。我们将介绍三种实现方式:使用 split 函数、使用正则表达式和手动实现分割函数。
方式一:使用 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 语言中将字符串分割成数组的方法,每种方法都有其优缺点。选择哪种方法取决于你的具体需求。
- 使用 split 函数最简单方便,但灵活性较低。
- 使用正则表达式可以灵活地指定分隔符,但代码可能比较复杂。
- 手动实现分割函数可以完全控制分割的行为,但代码量可能比较大。
希望本文对你理解 Dlang 字符串分割有所帮助。
原文地址: https://www.cveoy.top/t/topic/ocrm 著作权归作者所有。请勿转载和采集!