开发者

How to find and replace a substring?

For example I have such a string, in which I must find and replace multiple substrings, all of which start with #, contains 6 symbols, end with ' and should not con开发者_高级运维tain ) ... what do you think would be the best way of achieving that?

Thanks!

Edit: just one more thing I forgot, to make the replacement, I need that substring, i.e. it gets replaces by a string generated from the substring being replaced.


yourNewText=yourOldText.replaceAll("#[^)]{6}'", "");

Or programmatically:

Matcher matcher = Pattern.compile("#[^)]{6}'").matcher(yourOldText);
StringBuffer sb = new StringBuffer();
while(matcher.find()){
    matcher.appendReplacement(sb, 
      // implement your custom logic here, matcher.group() is the found String
      someReplacement(matcher.group());
}
matcher.appendTail(sb);
String yourNewString = sb. toString();


Assuming you just know the substrings are formatted like you explained above, but not exactly which 6 characters, try the following:

String result = input.replaceAll("#[^\\)]{6}'", "replacement"); //pattern to replace is #+6 characters not being ) + '


You must use replaceAll with the right regular expression:

myString.replaceAll("#[^)]{6}'", "something")

If you need to replace with an extract of the matched string, use a a match group, like this :

myString.replaceAll("#([^)]{6})'", "blah $1 blah")

the $1 in the second String matches the first parenthesed expression in the first String.


this might not be the best way to do it but...

youstring = youstring.replace("#something'", "new stringx");
youstring = youstring.replace("#something2'", "new stringy");
youstring = youstring.replace("#something3'", "new stringz");

//edited after reading comments, thanks

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜