String =“9,3,5,*****,1,2,3”
我想简单地访问“5”,它位于两个逗号之间,就在“*****”之前;然后只将这个“5”替换为其他值。
我怎么能用Java做到这一点?
答案 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术语以及字符串中五个星号之前的逗号。然后我们用你想要的东西替换它,以及原始模式中的五颗星。
在这里演示:
答案 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];