我正在尝试检查字符串是否包含特定顺序的不同字符串中的元素。
例如:
大字符串:thisisstring
小字符串:hssg
它应该返回true。
我只想出了如何检查字符串是否包含整个其他字符串而不是部分。 这是我为现在检查编写的代码:
if ([largestring rangeOfString:smallstring].location != NSNotFound) {
printf("contains");
}
答案 0 :(得分:5)
答案 1 :(得分:2)
没有简单的方法可以做到这一点,至少,没有我所知道的内置方式。您必须遍历小字符串的每个字母,并找到与您的大字符串匹配的第一个字母。
每次找到匹配的字母时,都会循环到下一个小字母,但只会在找到上一个字母后才开始在索引处搜索。
编辑: 一些未经测试的伪代码可能有语法错误:
int foundChar = 0;
for (int l = 0; l < strlen(smallstring); l++)
{
bool found = false;
for (; foundChar < strlen(largestring); foundChar++)
{
if (smallstring[l] == largestring[foundChar])
{
// We break here because we found a matching letter.
// Notice that foundChar is still in scope so we preserve
// its value for the next check.
found = true;
foundChar++; // Increment so the next search starts with the next letter.
break;
}
}
// If we get down here, that means we've searched all of the letters
// and found no match, we can result with a failure to find the match.
if (found == false)
{
return false;
}
}
// If we get here, it means every loop resulted in a valid match.
return true;