我的目标是找到类似于下面的模式,
space channel space
我想在文本块(页面')开始和结束时剪掉。
我在Lua中编写了以下代码。我的下面的代码只能使用1个字母的模式。
我应该如何使其适用于具有空格字空间模式的任何单词,该模式应该剪掉目前存在的数组索引值 页面的开头和结尾?
singleChar = ' and third party cookies (such as the DoubleClick cookie) together to (a) inform, optimize and serve ads based on a users past visits to '
totaLen = string.len(singleChar)
totalen = -totaLen
print('actual singleChar - '..singleChar)
singleCharChecking = string.sub(singleChar,-2,-1)
print ('singleCharChecking - '..singleCharChecking)
checkPattern = string.gmatch(singleCharChecking,"%s%a")
for word in checkPattern do
checkPatternLen = string.len(word)
print(checkPatternLen)
if (checkPatternLen == 2) then
singleChar = string.sub(singleChar,totalen,-2)
print('single char - '..singleChar)
end
end

输入: singleChar ='和第三方Cookie(例如DoubleClick Cookie)一起(a)根据用户过去访问的信息通知,优化和投放广告
预期输出 第三方Cookie(例如DoubleClick Cookie)一起(a)根据用户过去的访问情况通知,优化和投放广告
答案 0 :(得分:1)
或者,您可以将其拆分为2个gsub操作,使其稍微复杂一点:
local s = string.gsub(" and some text channel ", "^%s+%S+%s+", "")
s = s:gsub("%s+%S+%s*$", "")
第一行将删除最初的1+空格,1 +非空格,1 +空格,第二行将在字符串末尾指定相同的模式。
由于您要从字符串中删除第一个和最后一个非空白块,您可以使用
string.gsub(" and some text channel ", "^%s+%S+%s+(.*%S)%s+%S+%s+$", "%1")
<强>详情:
^
- 字符串开头%s+
- 1+空格%S+
- 1 +非空格%s+
- 1+空格(.*%S)
- 第1组贪婪地捕获任何0+字符到最后一个非空格字符后跟%s+%S+%s*$
- 字符串末尾的1+个空格(%s+
),1个非空格(%S+
)和0个空格(%s*
) $
)。替换部件中的%1
会将第1组内容重新插入结果中。