2016-07-26 20 views
1

私はLuaを含む特殊文字を含む文字列の完全一致を検索しようとしています。私は、以下の例は、それが完全に一致することを返すようにしたい、しかしのでそれは文字以外のクラスを含むルア一致文字列

index = string.find("test-string", "test-") リターン1

index = string.find("test-string", "test") ゼロnil

index = string.find("test-string", "test-string") リターンも1

を返し -文字の

完全に一致させるにはどうすればよいですか?

答えて

2

また、魔法の文字を無視無地部分文字列の一致を求めることができます:

string.find("test-string", "test-string",1,true) 
+0

私の状況では、これが最良の答えです。これは、2番目の「テスト文字列」が実際にユーザー入力されたため、完全一致を確認する必要があるためです。 – wprins

2

%文字のパターン内の特殊文字をエスケープする必要があります。したがって、この場合には、あなたが

local index = string.find('test-string', 'test%-string') 
+0

グレートを、そのフォローアップの質問 - 'テスト%の-string'はなります実際にからの入力になるだろうユーザー。ですから、今は '-'や' .'のような特殊文字を検索し、それぞれの文字の前に%を置かなければなりません。私はそれをどうやってやるのか知っていますか? – wprins

+0

はい、[この質問](http://stackoverflow.com/questions/9790688/escaping-strings-for-gsub)は入力文字列をエスケープする方法の良い例です。 –

+0

ありがとうございます私はあなたのための最終的な答えを選択します! – wprins

3

-を探している

はLuaの文字列パターンのパターン演算子であるので、あなたはtest-stringを言うとき、あなたは何回かのように文字列testに一致するようにfind()を言っています可能。それでtest-stringを見ると、そこにtestが表示され、-は実際のマイナス記号ではないので、実際にはteststringを探しています。

マイクが言ったように%文字でエスケープしてください。

thisはパターンを理解するのに役立ちます。

+0

これは参考になりました。これらの特殊文字を文字列で見つけて、それを自分自身と置き換えるためのアドバイスがありますか?おそらく 'string.gsub'を使用していますか? – wprins