D语言BetterC模式中如何实现strstri函数?
D语言BetterC模式中如何实现strstri函数?
在D语言的BetterC模式中,没有提供标准库中的strstri函数。但是可以通过自定义函数来实现字符串的匹配功能。
以下是两种实现方式:
1. 使用循环遍历字符串
import core.stdc.string;
@nogc nothrow
char* strstri(const char* haystack, const char* needle) {
if (!haystack || !needle) {
return null;
}
size_t haystackLen = strlen(haystack);
size_t needleLen = strlen(needle);
for (size_t i = 0; i <= haystackLen - needleLen; i++) {
size_t j;
for (j = 0; j < needleLen; j++) {
if (tolower(haystack[i + j]) != tolower(needle[j])) {
break;
}
}
if (j == needleLen) {
return cast(char*)(haystack + i);
}
}
return null;
}
2. 使用D语言的std.algorithm中的canFind函数
import std.algorithm;
@nogc nothrow
char* strstri(const char* haystack, const char* needle) {
if (!haystack || !needle) {
return null;
}
return cast(char*)(haystack.canFind(needle, (a, b) => toLower(a) == toLower(b)));
}
以上两种方法都可以实现strstri函数的功能,你可以根据自己的需要选择合适的方法。
原文地址: https://www.cveoy.top/t/topic/jnRI 著作权归作者所有。请勿转载和采集!