I\'m writing a program that will replace multiple words in a single string. I\'m using this code but it is replacing word but giving result in two different lines. I want
Now you can use StringUtils in commons-lang3 package.
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.7</version>
</dependency>
Code like below:
strOutput = StringUtils.replaceEach(inString, new String[]{"call me", "as soon as possible"}, new String[]{"cm", "asap"});
Use MessageFormat.format(queryString, retrieveArguments().toArray());
Instead of using replace
use replaceAll
which worked for me
String strOutput = inString.replaceAll("call me","cm").replaceAll("as soon as possible","asap");
The root problem is that, once you've made the first replacement, you can not work again with the same initially given string. I think the correct way of doing it would be using different copies and moving from one to the other the content while it is being replaced May be, better than this, the solution could be just do an extra replacement after each done replacement to erase the already replaced patterns. ;)
Of course it prints two lines: you have two print statements. Use this code:
import java.util.*;
public class ReplaceString {
public static void main(String[] args) {
new ReplaceString().run();
}
public void run()
{
System.out.println("Input String:\n");////
Scanner keyboardScanner = new Scanner(System.in);/////
String inString = keyboardScanner.nextLine();/////
String shortMessage = shortifyMessage(inString);
System.out.println(shortMessage);
}
public String shortifyMessage(String str)
{
String s = str;
s = s.replace("call me", "cm");
s = s.replace("as soon as possible", "asap");
// Add here some other replacements
return s;
}
}
If you want to do it in a single statement you can use:
String strOutput = inString.replace("call me","cm").replace("as soon as possible","asap");
Alternatively, if you have many such replacements, it might be wiser to store them in some kind of data structure such as a 2d-array. For example:
//array to hold replacements
String[][] replacements = {{"call me", "cm"},
{"as soon as possible", "asap"}};
//loop over the array and replace
String strOutput = inString;
for(String[] replacement: replacements) {
strOutput = strOutput.replace(replacement[0], replacement[1]);
}
System.out.println(strOutput);