Strings.xmlファイルにSQLクエリを格納しています。コードで最終的な文字列を作成するにはString.Format
を使用します。 SELECT
ステートメントでは、likeを使用しています。
SELECT Field1, Field2 FROM mytable WHERE Field1 LIKE '%something%'
これをフォーマットするために、 'something'を%1 $ sに置き換えます。
SELECT Field1, Field2 FROM mytable WHERE Field1 LIKE \'%%1$s%\'
私はバックスラッシュで一重引用符をエスケープします。ただし、%記号をエスケープすることはできません。
Strings.xmlファイルにlikeステートメントを含めるにはどうすればよいですか?
%
をエスケープするには、それを2倍にする必要があります:%%
。
前述の解決策を補足するには、次のようにします。
str = str.replace("%", "%%");
これは、入力ですでに倍増されている%%を置き換えない、より強力な正規表現の置き換えです。
str = str.replaceAll("(?:[^%]|\\A)%(?:[^%]|\\z)", "%%");