簡體   English   中英

為什么這個Java String.replaceAll()代碼不起作用?

[英]Why does this Java String.replaceAll() code not work?

我之前在Java中使用過string.replaceAll()並沒有遇到任何麻煩,但我對此感到難過。 我認為它只是工作,因為沒有“/”或“$”字符。 這是我想要做的:

String testString = "__constant float* windowArray";
String result = testString.replaceAll("__constant float* windowArray", "__global float* windowArray");

變量結果看起來與testString相同。 我不明白為什么沒有變化,請幫忙。

傳遞給replaceAll的第一個參數仍被視為正則表達式。 *字符是一個特殊字符,大致意思是字符串中的前一個字符(此處為: t )可以有0次或更多次。 你想要做的是逃避正則表達式的* 你的第一個論點看起來應該更像:

"__constant float\\* windowArray"

第二個參數是,至少為了你的目的,仍然只是一個普通的字符串,所以你不需要在那里轉義*

String result = testString.replaceAll("__constant float\\* windowArray", "__global float* windowArray");

您將需要轉義*,因為它是正則表達式中的特殊字符。

所以testString.replaceAll("__constant float\\\\* windowArray", "__global float\\\\* windowArray");

*是正則表達式量詞。 replaceAll方法使用正則表達式。 要避免使用正則表達式,請嘗試使用replace方法。

例:

String testString = "__constant float* windowArray";
String replaceString = "__global float* windowArray";
String result = testString.replace(testString.subSequence(0, testString.length()-1), 
            replaceString.subSequence(0, replaceString.length()-1));
String result = testString.replaceAll("__constant float windowArray\\\\*", "__global float\\* windowArray");

暫無
暫無

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

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