有源字符串
str = "one
two
three
four
five
six
seven
eight
nine"
我想获得一个字符串数组
String[] mas;
mas[0] = "one
two
three
four"
mas[1] =five
six
seven
eight"
mas[2] ="nine"
我想要一个不在我的行中的函数来做一个字符串数组。并且在数组的每一行中应该从原始字符串
获得4或6或N行答案 0 :(得分:5)
将String.split()
与regex \\s+
(或\n+
一起使用,具体取决于您完全想要的内容)。
如果需要,您可以连接2个或更多字符串,但是在使用split()
使用数组后 - 它应该相当容易,请尝试一下!
int SIZE = 4;
String[] arr = str.split("\\s+");
List<String> res = new ArrayList<>();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < arr.length; i++) {
sb.append(arr[i]).append('\n');
if (i % SIZE == SIZE-1) {
res.add(sb.toString());
sb = new StringBuilder();
}
}
if (sb.length() != 0) res.add(sb.toString());
System.out.println(res);
}
请注意,res
是List<String>
,如果您希望将其作为数组,则可以始终使用toArray()
方法。
答案 1 :(得分:1)
如果要拆分成每个数组元素一行的数组,那么String.split
应该这样做;看@ amit的答案。
如果要拆分为每个数组元素有N行的数组(根据您的示例),没有标准的库类/方法来执行此操作。据我所知,任何常用的第三方库都没有方法可以做到这一点。
所以你能做的就是以下之一:
Matcher.find(...)
以匹配/逐步换行换行符,每隔N次,您拨打String.substring(...)
以提取一组换行符。(它可能也可能产生一个粗糙的正则表达式,其中有一个复杂的正面后视,可以有效地计算N
换行符。但是,这是(IMO)“讨厌的“......)
答案 2 :(得分:1)
@Test
public void test(){
String str = "one\ntwo\nthree\nfour\nfive\nsix\nseven\neight\nnine";
int number = 52;
String[] strArr = getArray(str, 52);
}
String[] getArray(String str, int number){
int nb = (int) Math.ceil(number / 20);
String[] strSplit = str.split("\n");
String[] strArr = new String[nb+1];
int cursor = 0;
for (int colNumberForFinalArray=0; colNumberForFinalArray<nb+1; colNumberForFinalArray++){
strArr[colNumberForFinalArray] = "";
int countElts = 20;
if(colNumberForFinalArray == nb){
countElts = number % 20;
}
for(int i = cursor; i< cursor+countElts ; i++){
strArr[colNumberForFinalArray] += strSplit[i];
if(i < cursor+countElts-1){
strArr[colNumberForFinalArray] += "\n";
}
}
cursor = cursor+countElts;
}
return strArr;
}
答案 3 :(得分:0)
调用此方法,您将获得Array
string
public String[] stringSplitter(String input){
String[] splitStr = input.split("\\s+");
return splitStr ;
}
调用以下方法将结果组织为四个
组 public ArrayList<String> stringGrouping(String[] input){
int iter = 4;
ArrayList<String> result = new ArrayList<String>();
for(int i=0; i<input.length(); i++){
String temp="";
while(iter>0){
temp.append(input.get(i));
}
result.add(temp);
iter =4;
}
说明强>
- 方法split
采用regex
输入来检测您要分割的字符,并返回Array
分裂字。
- regex
“\ s +”检测到一个或多个空格的出现。
我希望它有所帮助