怎么用dlang语言实现laravel的IlluminateSupportStr以下几个方法我好在d语言的工程中快捷使用最好能并标明注释StrafterStrafterLastStrasciiStrbeforeStrbeforeLastStrbetweenStrcamelStrcontainsStrcontainsAllStrendsWithStrexcerptStrfinishStrheadli
由于dlang和Laravel的语言结构和函数库不同,因此无法直接实现Laravel的Illuminate\Support\Str类的方法。但是,您可以使用D语言的字符串和数组函数来实现类似的功能。以下是一些可能的实现:
Str::after:
string after(string str, string search) {
auto index = str.indexOf(search);
if (index == -1) {
return "";
}
return str[index + search.length .. $];
}
Str::afterLast:
string afterLast(string str, string search) {
auto index = str.lastIndexOf(search);
if (index == -1) {
return "";
}
return str[index + search.length .. $];
}
Str::ascii:
string ascii(string str) {
// Replace non-ASCII characters with their ASCII equivalents
// For example, "é" becomes "e"
return str.normalize(NormalizationForm.C).filter!(c => c.isAscii).lower;
}
Str::before:
string before(string str, string search) {
auto index = str.indexOf(search);
if (index == -1) {
return "";
}
return str[0 .. index];
}
Str::beforeLast:
string beforeLast(string str, string search) {
auto index = str.lastIndexOf(search);
if (index == -1) {
return "";
}
return str[0 .. index];
}
Str::between:
string between(string str, string start, string end) {
auto startIndex = str.indexOf(start) + start.length;
if (startIndex == -1) {
return "";
}
auto endIndex = str.indexOf(end, startIndex);
if (endIndex == -1) {
return "";
}
return str[startIndex .. endIndex];
}
Str::camel:
string camel(string str) {
return str.split(["_", "-", " "]).map!(w => w.capitalize).join("");
}
Str::contains:
bool contains(string str, string search) {
return str.indexOf(search) != -1;
}
Str::containsAll:
bool containsAll(string str, string[] searches) {
return searches.all!(s => str.indexOf(s) != -1);
}
Str::endsWith:
bool endsWith(string str, string search) {
return str.endsWith(search);
}
Str::excerpt:
string excerpt(string str, int length, string ending = "…") {
if (str.length <= length) {
return str;
}
return str[0 .. length] ~ ending;
}
Str::finish:
string finish(string str, string ending) {
if (str.endsWith(ending)) {
return str;
}
return str ~ ending;
}
Str::headline:
string headline(string str) {
return str.split("\n").map!(s => s.trim).filter!(s => !s.empty).join("\n\n");
}
Str::is:
bool is(string str, string pattern) {
auto regex = Regex(pattern);
return regex.search(str).count > 0;
}
Str::isAscii:
bool isAscii(string str) {
return str.filter!(c => !c.isAscii).empty;
}
Str::isUuid:
bool isUuid(string str) {
auto regex = Regex("[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}");
return regex.match(str).count > 0;
}
``
原文地址: https://www.cveoy.top/t/topic/flNb 著作权归作者所有。请勿转载和采集!