[英]Java: String.replaceAll() vs matcher.replaceAll() in a loop
[英]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.