String str = "[amt is E234.98.valid 23/12/2013.Sample text]"
如何只讀取字符「E」附近的上述示例字符串中的金額值。如何讀取數字之後的特定字符使用Java Android的字符?
String str = "[amt is E234.98.valid 23/12/2013.Sample text]"
如何只讀取字符「E」附近的上述示例字符串中的金額值。如何讀取數字之後的特定字符使用Java Android的字符?
你可以使用正則表達式和匹配組來提取你需要的東西。
代碼更新:
使用通過調用ParseWithRegexp.testIt()
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ParseWithRegexp {
static String str = "[amt is E234.98.valid 23/12/2013.Sample text E134.95.valid 23/12/2015]";
public static void testIt() {
Pattern p = Pattern.compile("E([0-9.]+)\\.valid");
Matcher m = p.matcher(str);
while (m.find()) {
System.out.println("found: "+m.group(1));
}
}
}
UPADTE: 你可以更嚴格的正則表達式,例如: "E([0-9]+\\.[0-9]+)"
我無法編譯上面的代碼... 我試圖運行這個代碼使用Android Studio,這是要求我導入這些庫建立,gradle文件 compile'org.hamcrest:hamcrest-core:1.3' 編譯'org.jetbrains:annotations-java5:15.0' 包括這兩個庫後,我從下面的包中導入了這兩個東西 import org.hamcrest.Matcher; import org.intellij.lang.annotations.Pattern; 但即使我無法編譯的源代碼 建議請 – prabu
像你說的,Ive從 import from Pattern from import java.util.regex.Pattern;包。 – prabu
你能告訴我從哪個包裏導入「Matcher」? – prabu
您可以使用indexOf()
方法從String
,例如:
如果您只想要粗體字,並且您的號碼中必須有一個點:
String str =「[amt is E 234.98 .valid 23/12/2013.Sample text]」;否則
String str = "whatever E2024.1.E";
///Start from the first character after "E"
int startPos = str.indexOf("E") + 1;
///Start from startPos
int dotPos = str.indexOf(".", startPos);
///Start from the first character after dotPos
int endPos = str.indexOf(".", dotPos + 1);
///return the result
return str.substring(startPos, endPos);
,如果你只是想號碼,直到第一個點做到這一點:
做這個
String str = "whatever E2024.1.E";
///Start from the first character after "E"
int startPos = str.indexOf("E") + 1;
///Start from the first character after startPos
int endPos = str.indexOf(".", startPos+ 1);
///return the result
return str.substring(startPos, endPos);
唯一的區別是,如果你必須有存在的點,然後你必須檢查它的位置並從它開始。
把變量「str」的所有可能的輸入值,並得出一個可以拆分字符串的邏輯。除了我懷疑現在是否有任何API。 – Stallion
如果值後面的文本總是「有效」,那麼答案是正確的,如果不是,那麼您將編輯您的問題,以更具體地瞭解可能性。 – AxelH