2017-07-22 96 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

相关问题