从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
如何通过修改此代码来实现?
答案 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 强>