6

私は次の文字列を持っています(文字列のこの形式は一般的です)

abc_2012-10-18-05-37-23_prasad_hv_Complete

のみ抽出したいprasad_hv。どうすればこれを行うことができますか?

この操作を実行したい文字列はこれだけではないため、この文字列に固有の文字列(たとえば、「prasad_hv」のチェック)は役に立ちません。

_区切り文字としてsplitを使用してみましたが、分割prasadしてhv個別に使用しました。助けてください!

PSを一般化すると、文字列は次の形式に従います

string_<digit>-<digit>-<digit>-<digit>-<digit>-<digit>_<String with underscores>_<String>
4

7 に答える 7

10

あなたは言う

文字列のこの形式は一般的です。

次に、分割後に要素をインデックス2および3と連結します。

String str = "abc_2012-10-18-05-37-23_prasad_hv_Complete";
String[] parts = str.split("_");
String extractedResult = "";
if(parts.length > 3)
   extractedResult = parts[2] + "_" + parts[3]; // prasad_hv is captured here.
于 2012-10-18T06:30:48.597 に答える
3

これは、必要な文字列に多数の下線文字がある場合でも機能します。

str.substring(str.indexOf("_", str.indexOf("_") + 1) + 1, str.lastIndexOf("_"));
于 2012-10-18T06:32:08.777 に答える
2

あなたはこのようにすることができます

String token[] = myString().split("_");
String resultString = "";

for(int a=0; a<token.length-1 ;a++){

   if(a == token.length-2)
   resultString = resultString+token[a]
   else
   resultString = resultString+token[a]+"_";


}

いずれのresultString場合も、希望する文字列になります

于 2012-10-18T06:40:29.500 に答える
1

正規表現を使用してデータを抽出できます。

String input = "abc_2012-10-18-05-37-23_prasad_hv_Complete";
String output = input.replaceAll("(?i)^[a-z]+_[^_]+_(\\w+)_[a-z]+$", "$1");
于 2012-10-18T06:35:56.300 に答える
0

正規表現を使用することもできます。その結果、次のようになります。

Pattern pattern = Pattern.compile(".*[0-9]_(.*)_Complete");
Matcher matcher = pattern.matcher("abc_2012-10-18-05-37-23_prasad_hv_Complete");
matcher.find();
String group = matcher.toMatchResult().group(1);
于 2012-10-18T06:42:08.883 に答える
0

文字列の場所が正確にわかっていて、場所が一定であることが確実な場合は、文字列をもう一度追加してみることができます。

于 2012-10-18T06:31:46.000 に答える
0

あなたの質問で私が理解しているのは、「_」で分割された文字列の3番目の要素から(n-1)番目の要素をそのままにすることです(nは分割後に形成される配列の長さです)。したがって、コードは次のようになります。

import java.util.Arrays;

public class StringSplit {
    public static final String test = "abc_2012-10-18-05-37-23_prasad_hv_Complete";
    public static void main(String args[]){
        String[] data = test.split("_");
        System.out.println(Arrays.toString(data));
        String aim = data[2];
        for(int i=3;i<data.length-1;i++){
            aim+="_"+data[i];
        }
        System.out.println(aim);
    }
}
于 2012-10-18T06:32:24.710 に答える