如何从给定的string中删除一个子string?

有没有一种简单的方法来从Java中给定的string中删除子string?

例如:“Hello World!” ,去掉“o” – >“Hell Wrld!”

你可以很容易地使用String.replace()

 String helloWorld = "Hello World!"; String hellWrld = helloWorld.replace("o",""); 

你可以使用StringBuffer

 StringBuffer text = new StringBuffer("Hello World"); text.replace( StartIndex ,EndIndex ,String); 
 replace('regex', 'replacement'); replaceAll('regex', 'replacement'); 

在你的例子中,

 String hi = "Hello World!" String no_o = hi.replaceAll("o", ""); 

看看Apache的StringUtils :

  • static String replace(String text, String searchString, String replacement)replace另一个string中的string的所有出现。
  • static String replace(String text, String searchString, String replacement, int max)用一个较大的string内的另一个stringreplacestring的第一个最大值的string。
  • static String replaceChars(String str, char searchChar, char replaceChar)用另一个replaceString中所有字符的出现。
  • static String replaceChars(String str, String searchChars, String replaceChars)replacestring中的多个字符。
  • static String replaceEach(String text, String[] searchList, String[] replacementList)replace另一个string中所有出现的string。
  • static String replaceEachRepeatedly(String text, String[] searchList, String[] replacementList)replace另一个string中所有出现的string。
  • static String replaceOnce(String text, String searchString, String replacement)用一个更大的string中的另一个stringreplace一个string。
  • static String replacePattern(String source, String regex, String replacement)使用Pattern.DOTALL选项replace与指定正则expression式匹配的源string的每个子string。

你应该看看StringBuilder/StringBuffer ,它允许你在指定的偏移量处删除,插入和replacechar。

你也可以使用番石榴的 CharMatcher.removeFrom函数。

例:

  String s = CharMatcher.is('a').removeFrom("bazaar"); 

这对我有好处。

 String hi = "Hello World!" String no_o = hi.replaceAll("o", ""); 

或者你可以使用

 String no_o = hi.replace("o", ""); 
  private static void replaceChar() { String str = "hello world"; final String[] res = Arrays.stream(str.split("")) .filter(s -> !s.equalsIgnoreCase("o")) .toArray(String[]::new); System.out.println(String.join("", res)); } 

如果你有一些复杂的逻辑来过滤字符,只是另一种方式,而不是取代。