-2

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

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”。

4

3 回答 3

1

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

String mystring = "test_12_woop_11";
String results[] = mystring.split("_");
于 2012-11-08T16:02:14.773 回答
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;
    }
}
于 2012-11-08T16:06:57.920 回答
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; 
    }
 }
于 2012-11-08T16:10:50.793 回答