2016-06-20 51 views
0
String str = "[amt is E234.98.valid 23/12/2013.Sample text]" 

如何只讀取字符「E」附近的上述示例字符串中的金額值。如何讀取數字之後的特定字符使用Java Android的字符?

+0

把變量「str」的所有可能的輸入值,並得出一個可以拆分字符串的邏輯。除了我懷疑現在是否有任何API。 – Stallion

+0

如果值後面的文本總是「有效」,那麼答案是正確的,如果不是,那麼您將編輯您的問題,以更具體地瞭解可能性。 – AxelH

回答

2

你可以使用正則表達式和匹配組來提取你需要的東西。

代碼更新:

使用通過調用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]+)"

+0

我無法編譯上面的代碼... 我試圖運行這個代碼使用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

+0

像你說的,Ive從 import from Pattern from import java.util.regex.Pattern;包。 – prabu

+0

你能告訴我從哪個包裏導入「Matcher」? – prabu

0

您可以使用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); 

唯一的區別是,如果你必須有存在的點,然後你必須檢查它的位置並從它開始。

相關問題