2013-04-16 52 views
0

如何删除后跟特殊字符(#)的单词?例如:从一句话:伊娃有绿色的眼睛我想删除“绿色”(伊娃有眼睛)这个词,这是结束在一个空间的词。Java - 如何在使用特殊符号后删除单词

我也有问题,删除整条生产线后跟@,

例如:Eva have [email protected] --->,应该是“eyes” 我的代码(我不知道山楂能我完成它) :

class Stack { 

public Stack() { 
    del = '&'; //that method deletes only one character 
        //ex: ab&cd ---> acd 
    destroy = '@'; 
    delWord = '#'; 
    stack = new Stack<Character>(); 

} 

public void methods(String string) 
{ 

    for (int i=0; i< string.length(); i++) //that method deletes only one character 
             //ex: ab&cd ---> acd 
    { 
     if (del == string.charAt(i)) 
     { 
      if (stack.size() > 0) 
      stack.remove(stack.size()-1); 
     } 
     else if(destroy == string.charAt(i)) 
     { 
     stack.remove(stack.size()); 

     } 
    } 
} 
} 
+0

http://stackoverflow.com/questions/14184305/regex-deleting-words-after-a-specific-character – Spring

+1

oracle.com/javase/1.5.0/docs/api/ java/lang/String.html#replaceAll(java.lang.String,%20java.lang.String)并学习正则表达式。 – PeterMmm

回答

0

是的,使用String类中的replaceAll方法,例如

String myString = "eyes#green" 
myString = myString.replaceAll("#.*", " "); 

第一个参数是一个正则表达式,它与您想要替换的正则表达式匹配。在这种情况下,hashtag后跟任何内容(即匹配字符串的其余部分)。

第二个参数是应该替换的参数,在这种情况下是空格。

根据需要修改正则表达式以达到您的目的。

+0

谢谢,但我不能代替他们,因为他们必须工作,因为他们有一些功能要做,例如,如果我有一系列字符ab && cd,第一次转换应该删除“b”,第二次应该删除“a”,所以结果应该是“cd”。如果我有一个短语伊娃有绿色@@眼睛,第一个转换应该删除单词“绿色”,第二个单词“有”,所以在结果中我应该获得“伊娃眼睛” –

0

要DELET整条生产线后跟@,试试这个:

String s = "Eva have [email protected]"; 
s = s.replaceAll(".*@"," "); 
System.out.println(s); 

输出:eyes


#之前删除的话,试试这个:

String s= "Eva have green#eyes "; 
s= s.replaceAll("\\s*(\\w+)#", " "); 
System.out.println(s); 

输出:Eva have eyes

+0

,如果我键入另一个词? –

+0

尝试用另一个词,第一个从开始到'@'删除,第二个删除空格和'#'之间的词 –

0

您可以将您的字符串转换成数组:

String[] string = plainText.split(" ,;[(!)*=]")//not using your # 

然后变换它ArrayList中,使用简单for(String word: arraylist) 检查每一个字的#存及其如果你找到了这样的话不把它写到另一个ArrayList或者到String数组的右边