2011-02-12 3 views
1

나는 기본적으로 항목 목록을 살펴보고 특정 방식으로 입력 문자열과 일치하는 항목을 처리하는 루아에서 검색 기능을 만들고 있습니다. 나는 string.find(sourceString, inputString)을 사용하여 항목을 식별합니다.루아에서 패턴의 유효성을 검사하는 방법

사용자가 텍스트 필드에 무엇인가를 입력 할 때마다이 함수가 호출되므로 패턴을 입력하려고하면 검색 문자열에 [ 또는 a이 들어있을 때 함수가 호출됩니다 어떤 원인으로 인해 오류가 발생합니까?

이 문제를 해결할 수있는 가장 좋은 방법은 입력을 유효한 패턴으로 beeing하여 유효성을 검사하는 것이지만이를 수행하는 방법을 알지 못합니다. 루아 자체가 ' T는 이것에 대한 방법이 포함되어있는 것 같아요. 다소 다소 성능이 좋은 방식으로 확인하는 방법에 대해 약간 혼란 스럽습니다. 미리 도움과 아이디어를 보내 주셔서 감사합니다. :)

답변

3

오류를 캡처하려면 string.findpcall의 전화 번호를 랩핑해야합니다.

local status, result = pcall(string.find, sourceString, inputString) 
if not status then 
    -- bad pattern logic, error message is in result 
else 
    -- good pattern logic, result contains the start index 
end 
+0

특수 문자가 패턴에서 "활성화"되도록하려면 예, 아마도 가장 간단한 방법 일 것입니다. –

+0

멋지게 보입니다. 내가보기에는 이미 패턴을 적용하려고 할 때 유효성 검사를 받게되는 유일한 문제입니다. 나는 코딩 포인트에서 첫 번째 애플리케이션 전에 문자열을 검증하는 것이 좋을 것이라고 생각한다. 그럼에도 불구하고, 나는 이것을 정확히 할 것이라고 생각한다. 감사! :) – gsnerf

1

패턴 탈출 기능은 Lua Users 어딘가에서 가져온 것입니다 (나는 생각한다.) this을 참조하십시오. 필요할 경우 유효성 검사 기능으로 변환 할 수 있습니다.

+0

은 'S1 = string.gsub (S1'(%의 W) ","%%% 1 ')'http://www.lua.org/pil/20.4.html에서 더 간결한 보인다. 그러나, 그게 전부라면, 왜 그냥 문자열 매개 변수를'string.find'로 사용하지 않을까요? 나는 그 문제가 어떻게 나쁜 패턴을 다루는 것이지, 어떻게 문자열을 벗어나는 것이 아닌가하는 것이라고 생각한다. – gwell

+0

@gwell : 질문에서 OP가 특수 문자를 허용하려고하는지 즉시 알 수 없습니다. –

+0

@gwell : 간결함 : 예. 그러나 긴 문자열로 이어질 수 있으므로 꼭 필요한 것은 아닙니다. –