我想更具體使用的replaceAll與GWT:
doSomeGWTStuffWithTheString(text.replaceAll("(?i)(" + query + ")", "<b>$1</b>"));
但對於一些它不運行的原因。我想我必須爲此使用一些特殊的庫。
如果您知道如何在GWT中完成上述操作,請告訴我。
我正在使用GWT的2.4測試版。
我想更具體使用的replaceAll與GWT:
doSomeGWTStuffWithTheString(text.replaceAll("(?i)(" + query + ")", "<b>$1</b>"));
但對於一些它不運行的原因。我想我必須爲此使用一些特殊的庫。
如果您知道如何在GWT中完成上述操作,請告訴我。
我正在使用GWT的2.4測試版。
String.replaceAll()
在GWT客戶端在內部使用JavaScript的正則表達式實現。看看RegExp
(包裝類)javadoc。它說:
Java-specific constructs in the regular expression syntax
(e.g. [a-z&&[^bc]], (?<=foo), \A, \Q) work only in the pure Java implementation,
not the GWT implementation, and are not rejected by either.
因此,似乎不支持使用(?i)
。
如果這是你的整個行,你忘記將返回的字符串分配給某些東西。 replaceAll()
方法不會將替換的結果隱式分配給它的String
對象。
測試:
String text = "I am trying to match SOMETHING";
String query = "ing";
System.out.println(text);
text = text.replaceAll("(?i)(" + query + ")", "<b>$1</b>");
System.out.println(text);
輸出:
I am trying to match SOMETHING
I am try<b>ing</b> to match SOMETH<b>ING</b>
我想你的意思是說不支持使用'(?i)'(即內聯修飾符)。 '?'的大多數其他用法(不情願的量詞,非捕獲組等)在JavaScript中與在Java中使用相同。 –
@Alan Moore:thx,已更正。 –