簡體   English   中英

為什么string.replaceAll行為異常

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM