提取字符串

时间:2012-11-08 15:58:49

标签: android string substring

我想知道我是否有以下字符串:

12_123_4_5678_ans123

我知道如果你知道开始和结束索引,你可以使用:

String substr=mysourcestring.subString(startIndex,endIndex);

如果你想从特定的索引到结束获得子串,你可以使用:

String substr=mysourcestring.subString(startIndex);

如果你想从特定字符到结束获取子字符串,你可以使用:

String substr=mysourcestring.subString(mysourcestring.indexOf("yourCharacter"));

如果以上实际上是4个选项(每个选项可以有不同的长度),提取12,123,4,5678和answer = 123,怎么能为上面写的呢?

公共间隔为“_”,答案必须在其前面有“ans”。

3 个答案:

答案 0 :(得分:1)

您可以使用String类split方法。如果你总想分开“_”。这将使用您选择的分隔符将字符串拆分为字符串实例数组。

String mystring = "test_12_woop_11";
String results[] = mystring.split("_");

答案 1 :(得分:1)

正如@JustDanyul和我之前所说String.split("_");会做的。现在解析我们的答案,就这样做:

String[] data = "12_2345_3465_312_ans12".split("_");
String answer = null;
for (String s : data) {
    if (s.startsWith("ans")) {
        answer = s
        break;
    }
}

答案 2 :(得分:1)

首先,它看起来像是在使用String作为数组。这通常是反模式,应该避免。我不知道这个字符串来自哪里,但问问自己是否你不能设置,以便你传递这些信息,而不是在字符串中。

String []  values = new String {
   "12",
   "123",
   "4",
   "5678",
   "ans123"
}; //here the 'ans' would always be the last index, obviously tailor your array to be whats 
   // mosts convienent for you. 

我正在进行一个巨大的考验,猜测这是多种选择问题的选择和答案? 在这种情况下,您可能需要一组可能的答案和一个指向哪个索引存储的答案......

 String []  values = new String {
   "12",
   "123",
   "4",
   "5678"
};
int correctAnsIndex = 1;
int userAnsIndex = 2;
String correctAns = values[ansIndex];
booelan isCorrect = (userAnsIndex == correctAnsIndex);
ect, ect, ect... 

如果你不能改变这个,那么hacky解决方案就是split命令。 "12_123_4_5678_ans123".split("_");会像这样返回和数组 { “12”, “123”, “4”, “5678”, “ans123”};

得到答案看起来像这样......

String [] values = "12_123_4_5678_ans123".split("_"); 
String answer = null; 
for(String s : values  ) {
    if( s.startsWith("ans")){
        answer = s; 
    }
 }