[英]How to extract a substring from a string in java
我正在做的是從我的代碼中驗證URL。 所以我有一個帶有url的文件,我想看看它們是否存在。 如果存在,則網頁包含xml代碼,其中將包含我要提取的電子郵件地址。 我繞了一個while循環,在每種情況下,如果URL存在,則xml被添加到字符串中。 這個大字符串包含xml代碼。 我想做的是從其中包含xml代碼的字符串中提取電子郵件地址。 我無法使用字符串api中的方法,因為它們要求您指定不知道的銷售索引,因為它每次都在變化。
我希望做的是在字符串中搜索以(例如“ <email id>
”)和(例如“ </email id>
”)結尾的子字符串,並將這些字符串之間的字符串添加到單獨的字符串中。
有誰知道這是否可行,或者是否有更簡單/不同的方式來做我想做的事情?
謝謝。
要回答您的主題問題:.indexOf或正則表達式。
但是,在簡短回顧您的問題之后,您實際上應該正確地處理XML文檔。
一個正則表達式,它將查找並返回兩個“字符之間的字符串:
import java.util.regex.Pattern;
import java.util.regex.Matcher;
private final static Pattern pattern = Pattern.compile("\"(.*?)\"");
private void doStuffWithStringsBetweenQuotes(String source) {
Matcher matcher = pattern.matcher(source);
while (matcher.find()) {
String match = matcher.group(1);
}
}
您是否嘗試過使用Regex? 樣本文檔可能對於此類問題非常有用。
查看org.xml.sax API。 它非常易於使用,並允許您通過XML進行解析,並在遇到任何感興趣的內容時對內容進行任何處理。 因此,您可以輕松地添加一些邏輯以查找<email>起始元素,然后保存將包含您的電子郵件地址的內容(字符)。
如果我正確理解了您的問題,則說明您是從多個網頁中提取XML片段並將它們串聯成一個大的“ xml”字符串,
看起來像
"<somedata
>blah</somedata
>
<email
>a.b@c.com</email
>
<somedata
>blah</somedata
>
<somedata
>blah</somedata
>
<email
>a.c@c.com</email
>
<somedata
>blah</somedata
>
<somedata
>blah</somedata
>
<email
>a.d@c.com</email
>
<somedata
>blah</somedata
>
<somedata
>blah</somedata
>
"
我建議通過包含根元素來使該XML文檔有些有效。
"
<?xml version="1.0" encoding="ISO-8859-1"?
><newRoot
><somedata
>blah</somedata
><somedata
>blah</somedata
><somedata
>blah</somedata
><somedata
>blah</somedata
><somedata
>blah</somedata
><somedata
>blah</somedata
><somedata
>blah</somedata
></newroot
>"
然后,您可以將其加載到Xml Document對象中,並可以使用Xpath表達式提取電子郵件節點及其值。
如果您不想這樣做,則可以使用indexOf(String str, int fromIndex)
方法來找到<email
>和</email
>(或稱為它們的任何位置)位置。 然后基於這些子字符串。 不過,這並不是一種特別干凈或易於閱讀的方式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.