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 回答