-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 []  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... 

これを変更できない場合、ハッキーな解決策は分割コマンドになります。 "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 に答える
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 に答える