2017-03-21 15 views
0

私はJavaを使い慣れていないため、私のシナリオではまったく解決策が見つかりませんでした。私は1500の長さである大きな弦を持っています。例えばJava - 大規模な文字列は異なるフィールド長で分割する必要があります

String inData = "THISKALJSKAJFDSKJDKSJ KSJDLKJSFKD LSKJDFKSJ, ASA:..";

Iは、これらの1500の長さのために、固定フォーマットを有します。私は各フィールドを固定長に基づいて200以上のフィールドに分割する必要があります。私は以下のようなものを見つけました。

String firstFld = inData.substring(0, 2);

String secondFld = inData.substring(3, 10);

String thirdFld = inData.substring(11, 13);

誰もが分割を行う代わりに、200個の文字列変数を宣言し、そこに格納したり、文字列配列にそれらをロードするより良い方法を提案してくださいすることができますか?私はそれらを取得した後、これらのフィールドすべてでxmlを構築する予定です。

ご協力いただきありがとうございます。

+1

は '長さ200 –

+1

のarray'あ​​なたは配列またはリスト –

+1

固定フォーマットが何であるに文字列を分割することができ使用lenghtsがありますか?それはあなたのコードのどこに保存されていますか? –

答えて

1

まあ、それは以下の2の場合、これは動作します:

  1. フィールドの長さのためのパターンがあります:(11,13)、(3、10)、(0,2)のように

    最初のケース::、(14、21)...

  2. あなたは、フィールドのリストを持っているが、あなたが望むものを解決することは非常に単純ですどちらの場合も

を長パターンは2つの文字です - > 2から始まる7文字以上

String[] fields = new String[getNumberOfFields(1500)]; 
int curr = 0; 
for(int i = 0 ; i < fields.length; i++) { 
    if(i % 2 == 0) { 
     fields[i] = inData.substring(curr, curr+7); 
     curr+=8; 
    } else { 
     fields[i] = inData.substring(curr, curr+2); 
     curr+=3; 
    } 
} 

第二ケース:あなたは別のフィールドの束が

int curr = 0; 
String[] fields = new String[fieldLengths.length]; 
for(int i = 0; i < fieldLengths.length; i++) { 
    fields[i] = inData.substring(curr, curr+fieldLengths[i]); 
} 
+0

パターンがより複雑な場合でも、複雑なやり方に依存して、別の方法で実装します。 – holandaGo

関連する問題