我正在尝试将此字符串拆分为数组格式,并尝试根据值的大小存储在字段name1,name2 ..并且名称字段必须只有26个字符。
名称: Bommiraj Sitaramanjaneyulu Rajasekhara Srinivasulu Laxminarayana Siva Venkata Sai
预期结果: name1 = Bommiraj Sitaramanjaneyulu,name2 = Rajasekhara srinivasulu,name3 = Laxminarayana Siva Venkata,name4 = sai,name5 =""。
实际结果:名称字段1:Bommiraju Rajasekhara Siva,名称字段2:Venkata Sai
String Testname=nameFormat(" Bommiraj Sitaramanjaneyulu Rajasekhara Srinivasulu Laxminarayana Siva Venkata Sai ");
String formatedName=name.trim().replaceAll("\\s{2,}", " ");
String[] splitedName = formatedName.split("\\s+");
String name1="";
String name2="";
String name3="";
String name4="";
String name5="";
for (String string : splitedName) {
if (name1.length()==0) {
name1+=string;
}else if (name1.length()>0 && name1.length()<26){
if (string.length()+name1.length()<26) {
name1+=" "+string;
}
}else if (name2.length()==0) {
name2+=string;
}else if (name2.length()>0 && name2.length()<26) {
if (string.length()+name2.length()<26) {
name2+=" "+string;
}
}
}
答案 0 :(得分:0)
如果计算出名字Bommiraju Sitaramanjaneyulu的大小,则有26个字符和一个空格。您的if
语句为<26
,因此最多只能包含25个不带空格的字符。
更一般地说,我建议将这些名称存储为String[]
并跟踪您所处的位置。在您当前的代码中,名称可能会转到string2,但较短的后来的名称可以转到string1,我认为这不是您想要做的。根据您的确切需要,我建议您从string[0]
开始,然后将其填满,直到当前字符串不适合,然后转到string[1]
并填写,等等。