2014-05-07 36 views
1

我试图找到一个Java子字符串,然后将其删除而不删除字符串的其余部分。在Java中查找并删除一个子字符串

我以XML作为输入,并想删除过时的标签,所以例如:

public class whatever { 
    public static void main(String[] args) { 

    String uploadedXML = "<someStuff>Bats!</someStuff> <name></name>"; 
    CharSequence deleteRaise = "<name>"; 

    // If an Addenda exists we continue with the process  
    if (xml_in.contains(deleteRaise)){ 
     // delete 
    } else { 
     // Carry on 
    } 
} 

在那里,我想删除<name></name>标签,如果它们包含字符串,而在留下<someStuff></someStuff>

我已经将XML解析为一个字符串,所以这里没有问题。我需要知道如何找到特定的字符串并删除它们。

+2

尝试'replace'方法在'String'类中。 – yskkin

+0

请提交它作为答案,这几乎是我所需要的。所以我想给出有效的答案。 – Erick

+0

你是什么意思,“将XML解析为字符串”?另外,任何不使用XML解析器进行XML操作的理由,比如Xerces?通过正则表达式操纵XML是...... [危险](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454)。 – Amadan

回答

3

您可以使用replaceAll(regex, str)来做到这一点。如果你不熟悉正则表达式,该?只是意味着可以有0 or 1出现的字符串中/,所以它涵盖<name></name>

String uploadedXML = "<someStuff>Bats!</someStuff> <name></name>"; 
String filter = "</?name>"; 
uploadedXML = uploadedXML.replaceAll(filter, ""); 

System.out.println(uploadedXML); 

<someStuff>Bats!</someStuff> 
1
String uploadedXML = "<someStuff>Bats!</someStuff> <name></name>"; 
String deleteRaise = "<name>"; 
String closeName = "</name>" 
// If an Addenda exists we continue with the process  
if (xml_in.contains(deleteRaise)){ 
    uploadedXML.replace(uploadedXML.substring(uploadedXML.indexOf(deleteRaise),uploadedXML.indexOf(closeName)+1),""); 
} else { 
    // Carry on 
}enter code here 
+0

我觉得这是行得通的,或者只是放置replaceAll而放弃... – TheTechWolf