[英]why is string.replaceAll misbehaving
我一直使用string.replaceAll()
沒有任何問題。
但是現在我很困惑...
這是我的代碼
public static String getVersionName() {
String versionName = null;
versionName = "v"+packageInfo.versionName;
versionName = versionName.replaceAll(".","_");
return versionName;
}
replaceAll之前的versionName為v1.0.4
預期結果是v1_0_4
實際結果是v____
或_____
,由於某種原因而有所不同,並且永遠不是預期結果。
為什么會這樣呢? 我該如何解決?
發生這種情況是因為replaceAll
使用正則表達式。
您需要轉義“。” 使用“ \\\\”。
之所以這樣,是因為replaceAll
需要一個正則表達式。 您可能應該使用replace
代替(它仍將替換所有出現的情況),因為您只想匹配一個字符。
因此,使用versionName = versionName.replace('.','_');
在v1.0.4上的結果將是v1_0_4。
replaceAll()
使用正則表達式,其中.
匹配任何字符 。
您的選擇是逃脫.
所以它的意思是“。” 再次使用\\\\.
或者,如果不需要正則表達式(在這種情況下不需要),則應改為使用replace()
,這樣會更快,並且現在不會有兩個問題需要解決 。
versionName = versionName.replace(".","_");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.