una posicion palabra otra letra extraer dentro como caracteres caracter cadena buscar string lua string-matching lua-patterns

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)

Ver demostración IDEONE

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.