Java替换两个逗号之间的字符串

时间:2017-07-22 06:19:48

标签: java regex replace split

String =“9,3,5,*****,1,2,3”

我想简单地访问“5”,它位于两个逗号之间,就在“*****”之前;然后只将这个“5”替换为其他值。

我怎么能用Java做到这一点?

5 个答案:

答案 0 :(得分: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

答案 1 :(得分: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})断言但不消耗。因此,我们可以忽略替换。

答案 2 :(得分: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长度检查 并处理它

答案 3 :(得分:0)

您可以,上的split然后, 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}}

答案 4 :(得分:0)

您可以使用spit()替换字符串

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