2014-09-30 41 views
0

我需要动态检查字符串中是否存在字符序列“(Self)”并将其解析出来。Java检查并解析出包含字符序列的字符串

所以,如果我的字符串说MyString的是

“ABCDEF(自我)”

它应该返回的myString作为

“ABCDEF”

什么是做这件事的最好方法?它可以一步完成吗?

+0

http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#replaceAll%28java.lang.String,%20java.lang。字符串%29返回字符串 – Leo 2014-09-30 09:08:56

+0

正则表达式是你需要检查我的答案。 – 2014-09-30 09:14:31

回答

2

如下您可以使用replace功能:

myString = myString.replace(" (Self)",""); 

这里,阅读更多有关things to note with String.replacefunction definition本身。请注意,它被char variant超载,所以你可以用类似的函数调用做两种事情。

myString = myString.replaceAll(Pattern.quote("(Self)"), "")); 
+0

Thx ...即使(字符串)不在字符串中,也不会显示任何错误? – testndtv 2014-09-30 09:10:00

+0

@testndtv如果(Self)未找到,它将返回原始字符串。 – Eran 2014-09-30 09:11:06

1

如下您可以使用replaceAll方法从String类m。Regular Expressions矿石上访问this链接。

如果字符串中没有Self,代码将不会有问题。

+0

@Hamad我很困惑,我刚刚提供了一个答案。这是一个不同于已接受的答案,但到目前为止它并没有错......“ABCDEF(Self)”。replaceAll(Pattern.quote(“(Self)”),“”));'returns' ABCDEF'。 ..我错过了什么吗? – Benjamin 2014-09-30 10:51:00

+0

对不起!这是我的错误,我试图选择低质量的答案,但在匆忙中另一个被选中 – Hamad 2014-09-30 11:34:21

+0

作为对不起我投票你的答案 – Hamad 2014-09-30 11:42:03

0

尝试以下:

 String test="ABCDEF (Self)"; 
     test=test.replaceAll("\\(Self\\)", ""); 
     System.out.println(test.trim()); 

输出:

ABCDEF 

的挖掘是使用

0

只需查看String类的公共方法。

String modifyString(String str) { 
    if(str.contains("(Self)")) { 
     str = str.replace("(Self)", ""); 
     str = str.trim(); 
    } 
    return str; 
} 
0

从的问题,据我所知,从源字符串ABCDEF (Self)F(之间的空间应该被删除。 我会建议使用正则表达式,如果你是舒服,否则:

String OrigString = "ABCDEF (Self)"; 
String newString= OrigString.replaceAll("\\(Self\\)", "").trim(); 
System.out.println("New String : --" +newString+"--"); 

您的情况下,正则表达式是:

\s*\(Self\)\s* 

测试的Java代码中使用正则表达式是:

String newRegExpString = OrigString.replaceAll("\\s*\\(Self\\)\\s*", ""); 
    System.out.println("New String : -" +newRegExpString+"--"); 

输出:

New String : --ABCDEF-- 
New String : -ABCDEF--