我有一个很大的字符串缓冲区,我想分成更小的部分。字符串缓冲区看起来像这样
"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+...."
我将如何实现这项任务?
答案 0 :(得分: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++;
}
答案 1 :(得分:1)
如果可能的话,使用String.split()分割String会容易得多:
/* 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;
答案 2 :(得分:0)
每个名字之间必须有一些分隔符。要打破字符串,我们应该有一些分隔符。 如果你有分隔符,你可以在for循环中使用subString()。
答案 3 :(得分: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];
}
希望这会有所帮助
答案 4 :(得分:0)
String.split("\\+")
Arrays.copyOfRange(...)
Joiner.on("+").join(smallerArray)