簡體   English   中英

Java ReplaceAll vs For循環,其中包含Replace

[英]Java ReplaceAll vs For loop with Replace in it

我有一個字符串,其中包含一些數據,我需要從中刪除一些特殊字符並標記數據。

為獲得更好的性能,應優先選擇以下兩種方法中的哪一種:

String data = "Random data (For performance) Waiting for reply?"
data=data.replaceAll("?", "");
data=data.replaceAll(".", "");
data=data.replaceAll(",", "");
data=data.replaceAll("(", "");
data=data.replaceAll(")", "");  

String[] tokens = data.split("\\s+");  
for(int j = 0; j < tokens.length; j++){
  //Logic on tokens
}  

要么

String data = "Random data (For performance) Waiting for reply?"

String[] tokens = data.split("\\s+");  
for(int j = 0; j < tokens.length; j++){
    tokens[j]=tokens[j].replace("?", "");
    tokens[j]=tokens[j].replace(".", "");
    tokens[j]=tokens[j].replace(",", "");
    tokens[j]=tokens[j].replace("(", "");
    tokens[j]=tokens[j].replace(")", "");      

  //Logic on each token
}  

還是有其他方法可以提高性能嗎? (一些統計數據將非常感謝)

上面提供的For循環將用於在每個令牌上執行其他邏輯。
替換方法是否更快地強加於整個內容,還是替換for循環中的每個標記(無論替換是否執行)都更快?

即替換一次並執行其他操作或逐步替換每個令牌,然后執行所需的操作。

提前致謝

只需replace即可,無需任何循環。

replaceAll使用具有更多性能開銷的引擎蓋下的regexp引擎。

似乎對這個“全部”后綴有一個共同的誤解。

請參閱String replace()和replaceAll()之間的區別

更新

發現與此非常相似的問題:

從字符串中刪除某些字符

我不知道這類問題的統計數據,但首先,如果你關注性能,我會用一個替換各種replaceAll()調用,如下所示:

data=data.replaceAll("\\?|\.|\\)|\\(|,", "");

它可能會更快。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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