从JAVA字符串中删除以特定字符开头的空格和单词

时间:2014-06-03 11:39:32

标签: java string

从JAVA字符串中删除以特定字符开头的空格和单词。

消除了字符串之间的以下代码空间:

String str1= "This is symbel for snow and silk. Grapes are very dear"
String str2=str1.replaceAll(" ","");
System.out.println(str2);

它给出了这个输出: -

output:
Thisissymbelforsnowandsilk.Grapesareverydear 

但是我想从char' s开始消除str1中的所有单词。 (symbel snow silk)和char' d' (亲爱的)获得以下输出: -

output:
Thisisforand.Grapesarevery

如何通过修改此代码来实现?

3 个答案:

答案 0 :(得分:3)

最佳解决方案是使用正则表达式,也称为正则表达式。

这些专门用于复杂搜索和替换字符串中的功能。

这一个:

"([sd]\\w+)|\\s+"

匹配由括号()开头的单词组,以' s'开头。或者' d'然后是一个或多个"字"字符(\\w = any alpha numeric or underscore) 一个或多个空白字符(\\s = whitespace)。当用作String replaceAll函数的参数时,如:

s.replaceAll("([sd]\\w+)|\\s+", "");

每个与这两种模式中的任何一种相匹配的出现都被替换为空字符串。

这里有关于Oracle的java文档中有关正则表达式的全面信息:

http://docs.oracle.com/javase/tutorial/essential/regex/

虽然它们一开始看起来很神秘,但学习它们可以大大简化代码。几乎所有现代语言都提供正则表达式,因此您获得的有关正则表达式的任何知识都是有用且可转移的。

此外,网络上充斥着方便的网站,您可以在将它们提交给代码之前测试您的正则表达式。

答案 1 :(得分:2)

试试这个

s = s.replaceAll("([sd]\\w+)|\\s+", "");

答案 2 :(得分:2)

这样做

String str1= "This is symbel for snow and silk. Grapes are very dear";
System.out.print(str1.replaceAll("[sd][a-z]+|[ ]+",""));

<强> Explanation