我想在java(android)中拆分電子郵件字符串,但它無法正常工作。無法獲得String.split()在Android上的預期工作
Input: "[email protected]"
String[] pattens = email.split("@.");
Expected: "ihnel48", "gmail", "com"
Output: "ihnel48" "mail.com"
我想在java(android)中拆分電子郵件字符串,但它無法正常工作。無法獲得String.split()在Android上的預期工作
Input: "[email protected]"
String[] pattens = email.split("@.");
Expected: "ihnel48", "gmail", "com"
Output: "ihnel48" "mail.com"
因爲String.split
根據regular expression比賽,@.
意味着它看起來字符在一行(不要麼字符一旦)。而且,.
正則表達式中是一個特殊字符,意思是「什麼」:
@. = "@ and then any character"
在你的情況下,這個「@g」和不點相匹配。
相反,你想:
String[] pattens = email.split("[@.]");
的方括號,[]
,創建人物類,它代表所有有效字符一個位置可以匹配。所以,你需要匹配「@
」或「.
」。字符.
不需要在字符類中轉義。
尼斯!你真的治癒了我20分鐘的頭痛!多謝,夥計 –
的.
匹配g
,即g
也將被刪除
嘗試:
String[] pattens = email.split("@");
你想拆就@或。我相信。
爲正確的正則表達式是:"@|\."
編輯:把括號,而不是報價的最初
你必須逃脫週期(.
)。否則它是通配符,並且會匹配任何單個字符。逃避它的方式是反斜槓。在Java中的字面字符串中,反斜槓也是轉義字符,所以您必須使用兩個反斜槓。此外,您需要某種「或」運算符來告訴它在遇到.
或@
時進行拆分。有兩種方法可以做到這一點。
這裏有一個:
String[] pattens = email.split("@|\\.");
下面是另一個:
String[] pattens = email.split("[@\\.]");
有趣的解決方案:
//Replace all "." to "@", and split
String split(String input){
String[] patterns = input.replaceAll("\\.", "@").split("@");
return Arrays.toString(patterns);
}
試試這個代碼
StringTokenizer tokens = new StringTokenizer(CurrentString, "@");
String first = tokens.nextToken();
String second = tokens.nextToken();
當然它的作品。你只是沒有正確使用它。 –
這個問題與android沒有任何關係。 –
好的,我明白了。使用正則表達式會更好。 –