如何检查字符串是否包含子字符串,但仅限于特定位置?
示例字符串:
你最喜欢的颜色是什么?我最喜欢的颜色是蓝色
如果我想检查字符串是否包含特定单词,我通常会这样做:
var
S: string;
begin
S := 'What is your favorite color? my [favorite] color is blue';
if (Pos('favorite', S) > 0) then
begin
//
end;
end;
Run Code Online (Sandbox Code Playgroud)
我需要的是确定字符串中是否存在单词favourite,忽略它是否出现在[]符号中,上面的代码示例显然没有.
因此,如果我们将代码放入布尔函数中,一些示例结果将如下所示:
TRUE:你最喜欢的颜色是什么?我的[ 我最喜欢的 ]颜色是蓝色
TRUE:你最喜欢的颜色是什么?我的[ 等等 ]颜色是蓝色的
FALSE:你的等级是什么颜色?我最喜欢的颜色是蓝色
上面的前两个样本都是真的,因为在[]符号之外找到了收藏词,无论它是否在其中.
第三样是假的,因为即使是最喜欢的词,它仅出现在[]符号里面 - 如果它存在的标志外,我们应该只检查.
所以我需要一个函数来确定一个单词(在这个例子中是最喜欢的)是否出现在一个字符串中,但忽略了这个单词被包含在[]符号中的事实.
使用C#,我需要使用LIKE命令准备一个搜索文本,以便在SQL Server数据库中进行搜索,方法是用%字符替换引号外的所有空格.例:
输入:
my "search text"
Run Code Online (Sandbox Code Playgroud)
输出:
%my%search text%
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激.在替换文本之前,我可以处理具有奇数引号的输入字符串.