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

从JAVA字符串中消除以特定字符开头的空格和单词,java,string,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 但是我想删除str

从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 
但是我想删除str1中以char's'(symbel snow silk)和char'd'(亲爱的)开头的所有单词,以获得以下输出:-

output:
Thisisforand.Grapesarevery
如何通过修改此代码来实现此目标?

试试这个

s = s.replaceAll("([sd]\\w+)|\\s+", "");
你喜欢这样吗

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

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

它们专门为字符串中的复杂搜索和替换功能而设计

这个:

"([sd]\\w+)|\\s+"
匹配由括号()表示的词组,括号()以“s”或“d”开头,后跟一个或多个“word”字符
(\\w=任何字母数字或下划线)
,或一个或多个空白字符
(\\s=空白)
。当用作字符串replaceAll函数的参数时,如下所示:

s.replaceAll("([sd]\\w+)|\\s+", "");
匹配这两种模式中任何一种模式的每种情况都将替换为空字符串

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

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


此外,web上到处都是方便的站点,在将正则表达式提交到代码之前,您可以在这些站点上进行测试。

请查找“Word Boundry+正则表达式”,我的朋友。。谁知道呢,你可能甚至不需要“”,可能会帮助你…这应该是
[sd]
而不是
[sg]
这个答案并没有真正向原版解释任何事情poster@MattCoubrough应该吗?还有比这更好的地方可以阅读正则表达式,imVHo。@okiharaherbst是的。否则,下次需要正则表达式解决方案时,他们将不得不发布另一个问题。。。“试试这个”答案通常不被接受。仅仅因为问题质量在下降,答案质量也不必太差。@MattCoubrough Fine。让他们问一个“正则表达式是如何工作的?”问题,然后在不到5分钟的时间内将其关闭。这个问答对就是一个完美的例子:它简洁而精确。如果您在未阅读API的情况下使用
replaceAll
,您不能要求除您自己以外的任何人对此负责。您能为原始海报解释一下这个正则表达式吗?