2014-11-03 38 views
3

如何替换子字符串形式的Java “:[数字]:”如何替换在java中包含任何整数的子串?

例如:

string="Hello:6:World" 

更换后,

HelloWorld 
+4

':\\ d +:'是怎么回事? – 2014-11-03 09:19:52

+0

如果您确定最后一个字符是':',则首先删除最后一个字符,然后使用split()方法 – Reyjohn 2014-11-03 09:22:27

+0

我想为此使用正则表达式。 @Reyjohn – 2014-11-03 09:29:16

回答

2
ss="hello:909:world"; 

做如下:

String value = ss.replaceAll("[:]*[0-9]*[:]*",""); 
+1

Bingooooooo ......非常感谢......这正是我所需要的 – 2014-11-03 09:48:07

+1

只是':\\ d *:'就够了。 – 2014-11-03 09:49:08

+0

*用于0个或更多字符 如果要确保至少有一个字符 则使用+而不是* – WannaBeCoder 2014-11-03 09:49:42

1

做这样

String s = ":6:";  
s = s.replaceAll(":", ""); 
+0

好奇,为什么这个人有一个upvote? – wumpz 2014-11-03 11:17:16

2

您可以使用正则表达式来定义你想要的图案

String pattern = "(:\d+:)"; 
string EXAMPLE_TEST = ':12:' 
System.out.println(EXAMPLE_TEST.replaceAll(pattern, "text to replace with")); 

应视正是你要替换什么工作...

+0

你检查过你的模式吗? – 2014-11-03 09:39:37

0

编辑1:问题发生变化后,应该使用

:\d+: 

和Java内部

:\\d+: 

这是更换::以及答案。

这是你应该使用正则表达式:

:\d*: 

Regular expression visualization

Debuggex Demo

这里是一个正在运行的JavaCode剪断:

String str = "Hello :4: World"; 
String s = str.replaceAll(":\\d*:",""); 
System.out.println(s); 

一个问题的replaceAll是经常的,即修正字符串是返回。被调用的字符串对象replaceAll未被修改。

+0

由于'*'匹配零重复,尽管这也会匹配'::',所以应该使用':\ d +:'(一个或多个重复),具体取决于哪个是期望的行为。 – 2014-11-03 10:16:28

+0

奇怪。这个问题被编辑了。之前有一句话:“我想替换::以及因此我用*。 – wumpz 2014-11-03 10:20:57

相关问题