Dlang 实现类似 PHP sub_str 函数 - 支持负数参数和边界处理
以下是基于 Dlang 语言原生实现的 sub_str 函数,支持 start 和 length 参数的负数输入,同时考虑了边界问题,可以直接运行:
import std.stdio;
string sub_str(string input, long start, long length = -1)
{
// 处理 start 参数,负数表示从末尾开始截取
if (start < 0) {
start = input.length + start;
if (start < 0) start = 0;
}
// 处理 length 参数,负数表示截取至末尾倒数第几个字符
if (length < 0) {
length = input.length + length - start;
if (length < 0) length = 0;
}
// 处理边界问题,防止越界
if (start + length > input.length) {
length = input.length - start;
}
return input[start .. start + length];
}
void main()
{
// 测试
string input = 'hello world';
writeln(sub_str(input, 6, 5)); // 输出 'world'
writeln(sub_str(input, -5, 3)); // 输出 'wor'
writeln(sub_str(input, -5)); // 输出 'world'
}
该函数支持以下特性:
- start 为负数: 表示从字符串末尾开始截取,例如
-5表示从末尾第五个字符开始截取。 - length 为负数: 表示截取至末尾倒数第几个字符,例如
-1表示截取至字符串末尾,-3表示截取至倒数第三个字符。 - 边界处理: 防止越界,保证截取的字符范围在字符串长度之内。
通过以上功能,该函数能够有效地实现类似 PHP 的 sub_str 函数的功能。
原文地址: https://www.cveoy.top/t/topic/oddZ 著作权归作者所有。请勿转载和采集!