2017-07-22 125 views
-1

String =「9,3,5,*****,1,2,3」Java替換兩個逗號之間的字符串

我想簡單地訪問兩個逗號之間的「5」 ,並在「*****」之前;那麼只能將此「5」替換爲其他值。

我怎麼能在Java中做到這一點?

+0

你嘗試過這麼遠嗎? – arielnmz

+0

沒什麼。我知道s.split; s.replace; s.substring;但我怎樣才能先拆分然後替換? – user815408

+0

你應該根據你所嘗試的和你面臨的問題來提問。你可以像這樣使用正則表達式模式String pattern =「。*(\\ d),\\ * +」;並創建一個正則表達式模式r = Pattern.compile(pattern);現在匹配文本匹配器對象 Matcher m = r.matcher(text);如果在檢查m.find()發現的任何內容後,mGroup(1)將包含您的值,則按捕獲組進行分組。請閱讀正則表達式和捕獲組在java.Check這個問題https://stackoverflow.com/questions/17969436/java-regex-capturing-groups – RawAliasCoder

回答

3

您可以嘗試使用下面的正則表達式替換:

String input = "9,3,5,*****,1,2,3"; 
input = input.replaceAll("[^,]*,\\*{5}", "X,*****"); 

這裏是正則表達式的解釋:

[^,]*, match any number of non-comma characters, followed by one comma 
\\*{5} followed by five asterisks 

這意味着匹配任何CSV項加逗號來的五個星號前在你的字符串中。然後我們用你想要的和原始圖案中的五顆星代替它。

演示在這裏:

Rextester

+0

我的歉意,@Tim。我搞砸了,然後我們發生了衝突,很抱歉,我是不是真的想成爲一個破壞者 –

+0

非常感謝,但是你能否解釋一下「\\ * {5}」?這是什麼意思? – user815408

0

你可以split,,然後用join一個,(與所需的值替換5後 - 說X)。像,

String[] arr = "9,3,5,*****,1,2,3".split(","); 
arr[2] = "X"; 
System.out.println(String.join(",", arr)); 

,輸出

9,3,X,*****,1,2,3 
+1

我認爲OP有興趣找到'*****'並替換無論它在陣列中的位置如何,它都是_before_它。 –

+0

@DawoodibnKareem *在兩個逗號之間,並在'「*****」'之前; * - 所以它似乎索引是固定的(對我來說)。 –

1

我認爲中newstr是 「6」

String str = "9,3,5,*****,1,2,3"; 
char newstr = '6'; 
str = str.replace(str.charAt(str.indexOf(",*") - 1), newstr); 

此外,如果你不知道有關IndexOutOfBoundException STR長度檢查和處理它

0

你可以用spit()替換字符串

String str = "9,3,5,*****,1,2,3"; 
String[] myStrings = str.split(","); 
String str1 = myStrings[2]; 
2

我想用一個正向表達式向前查找一個位於",*****"之前的數字串,並用新值替換它。您正在尋找的正則表達式將是\d+(?=,\*{5}) - 即一個或多個數字,其中包含一個逗號和五個星號。所以,你會寫

newString = oldString.replaceAll("\\d+(?=,\\*{5})", "replacement"); 

這裏是在更換所使用的正則表達式的解釋:

\\d+   match any numbers of digits, but only when 
(?=,\\*{5}) we can lookahead and assert that what follows immediately 
       is a single comma followed by five asterisks 

需要注意的是超前(?=,\\*{5})斷言,但不會消耗是非常重要的。因此,我們可以忽略它的替代。

+0

thx。 \\ d +表示數字;而\\ * {5}表示五個星號。但我仍然對+(?=部分;這是什麼意思?)表示懷疑? – user815408

相關問題