string - posicion - cómo verificar si una palabra aparece como una palabra completa en una cadena en Lua
como buscar una letra en una cadena en java (2)
function isWordFoundInString(w,s)
return select(2,s:gsub(''^'' .. w .. ''%W+'','''')) +
select(2,s:gsub(''%W+'' .. w .. ''$'','''')) +
select(2,s:gsub(''^'' .. w .. ''$'','''')) +
select(2,s:gsub(''%W+'' .. w .. ''%W+'','''')) > 0
end
print(isWordFoundInString(''Play'',''Info Playlist Play pause''))
print(isWordFoundInString(''Play'',''Info Playlist pause''))
print(isWordFoundInString(''Play'',''Info NowPlay pause''))
no estoy seguro de cómo comprobar si una palabra aparece como una palabra completa en una cadena, no como parte de una palabra, distingue entre mayúsculas y minúsculas. por ejemplo:
Play
está en cuerdas
Info Playlist Play pause
pero no en las cuerdas
Info Playlist pause
Info NowPlay pause
Dado que no existe un límite de palabra habitual en Lua, puede utilizar un patrón de frontera %f
. %f[%a]
coincide con una transición a una letra y %f[%A]
coincide con la transición opuesta.
%f[set]
, un patrón de frontera ; dicho elemento coincide con una cadena vacía en cualquier posición, de modo que el siguiente carácter pertenece al conjunto y el carácter anterior no pertenece al conjunto. El conjunto de conjuntos se interpreta como se describió anteriormente. El principio y el final del tema se manejan como si fueran el carácter/0
.
Puede usar la siguiente función ContainsWholeWord
:
function ContainsWholeWord(input, word)
return string.find(input, "%f[%a]" .. word .. "%f[%A]")
end
print(ContainsWholeWord("Info Playlist pause","Play") ~= nil)
print(ContainsWholeWord("Info Play List pause","Play") ~= nil)
Para emular completamente el comportamiento /b
, puede usar
"%f[%w_]" .. word .. "%f[^%w_]"
patrón, ya que /b
coincide con las posiciones entre:
- Antes del primer caracter en la cadena, si el primer caracter es una palabra (
[a-zA-Z0-9_]
) caracter. - Después del último carácter en la cadena, si el último carácter es una palabra (
[a-zA-Z0-9_]
) carácter. - Entre dos caracteres en la cadena, donde uno es un carácter de palabra (
[a-zA-Z0-9_]
) y el otro no es un carácter de palabra ([^a-zA-Z0-9_]
).
Tenga en cuenta que %w
Lua patrón no es lo mismo que /w
ya que solo coincide con letras y dígitos, pero no con un guión bajo.