String =「9,3,5,*****,1,2,3」Java替換兩個逗號之間的字符串
我想簡單地訪問兩個逗號之間的「5」 ,並在「*****」之前;那麼只能將此「5」替換爲其他值。
我怎麼能在Java中做到這一點?
String =「9,3,5,*****,1,2,3」Java替換兩個逗號之間的字符串
我想簡單地訪問兩個逗號之間的「5」 ,並在「*****」之前;那麼只能將此「5」替換爲其他值。
我怎麼能在Java中做到這一點?
您可以嘗試使用下面的正則表達式替換:
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項加逗號來的五個星號前在你的字符串中。然後我們用你想要的和原始圖案中的五顆星代替它。
演示在這裏:
我的歉意,@Tim。我搞砸了,然後我們發生了衝突,很抱歉,我是不是真的想成爲一個破壞者 –
非常感謝,但是你能否解釋一下「\\ * {5}」?這是什麼意思? – user815408
我認爲中newstr是 「6」
String str = "9,3,5,*****,1,2,3";
char newstr = '6';
str = str.replace(str.charAt(str.indexOf(",*") - 1), newstr);
此外,如果你不知道有關IndexOutOfBoundException STR長度檢查和處理它
你可以用spit()替換字符串
String str = "9,3,5,*****,1,2,3";
String[] myStrings = str.split(",");
String str1 = myStrings[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})
斷言,但不會消耗是非常重要的。因此,我們可以忽略它的替代。
thx。 \\ d +表示數字;而\\ * {5}表示五個星號。但我仍然對+(?=部分;這是什麼意思?)表示懷疑? – user815408
你嘗試過這麼遠嗎? – arielnmz
沒什麼。我知道s.split; s.replace; s.substring;但我怎樣才能先拆分然後替換? – user815408
你應該根據你所嘗試的和你面臨的問題來提問。你可以像這樣使用正則表達式模式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