1

小さな部分に分割したい大きな文字列バッファがあります。文字列バッファは次のようになります

"name1+name2+name3+name4+..........+name2000"

どこ

name1=john
name2=prince 
and so on.

(idea.name1,name2,name3 は、さまざまな長さの実際の名前を表します)

ここで、名前を文字列配列に格納し、各位置に 200 個の名前を格納したいと考えています。

string[0]="name1+name2+name3+........+name200";
string[1]="name201+name202+...."

このタスクを達成するにはどうすればよいですか?

4

5 に答える 5

2
StringTokenizer str = new StringTokenizer(<StringBufferObject>);
int count = 0;
int arrCount = 0;
StringBuffer temp;
String[] stringArr = new String[x];
while(str.hasMoreTokens()) {
    count++;
    if(count != 200) {
        temp.append(str.nextToken());
    }
    else {
    stringArr[arrCount] = temp;
    temp.delete(0,temp.length());
    count = 0;
    arrCount++;
}
于 2012-03-14T05:48:10.840 に答える
1

可能であれば、 String.split() を使用して文字列を分割する方がはるかに簡単です。

/* something like this */

String arrayOfStrings = inputString.split("\+");

それを StringBuffer として保持する必要がある場合は、入力をループして自分でトークン化する必要があります。

私はそれが次のようになると思います:

public String[] getTwoHundredStrings(StringBuffer inputBuff, String someToken)
{
    String [] nameArray = new String [200];

    int currentPos = 0;
    int nextPos = 0;

    for ( int i = 0; i < 200; i ++ ) {

        nextPos = inputBuff.indexOf(someToken, currentPos);

        if ( nextPos < 0 ) {
            break;
        }

        String nextName = inputBuff.substring(currentPos, nextPos);

        nameArray[i] = nextName;        
        currentPos = nextPos;
    }   

    /* do some cleanup if nameArray has less than 200 elements */

    return nameArray;
于 2012-03-14T05:50:21.250 に答える
0

各名前の間に区切り文字が必要です。文字列を分割するには、区切り文字が必要です。区切り文字がある場合は、for ループで subString() を使用できます。

于 2012-03-14T05:38:39.603 に答える
0

使ってみてください

String[] tempNames = new String(namesBuffer).split("+");

その後

int length = (tempNames.length / 200)+ (tempName.length % 200)
String[] names = new String[length];
for(int i = 0 ; i< tempNames.length ; i++){
   for(int j = 0 ; j < length ; j++)
       names[j] = tempNames[i];
}

お役に立てれば

于 2012-03-14T05:40:02.140 に答える
0
  1. を使用して、「+」で分割しますString.split("\\+")
  2. より小さな配列でチャックを取得し、Arrays.copyOfRange(...)
  3. Guava Joinerを使用して参加するJoiner.on("+").join(smallerArray)
于 2012-03-14T05:42:31.343 に答える