我在一个名为string1到string7的程序中有七个字符串.
每个字符串的大小为30个字符.
我将得到一个未知长度的输入字符串.
我必须将此输入字符串拆分为30个字符串,然后将第一个子字符串设置为string1,将第二个字符串设置为string2,依此类推,直到可能为止.如果输入字符串大于210个字符,则结尾处的剩余字符串将被忽略.
当输入字符串的大小小于210 char时,如何处理这种情况.
对于例如145,在这种情况下,string1到string4将是full,而string5将由剩余的15个char组成.
怎么处理这个很好?
我可以通过char读取char并将前30个char和string1,next2等接下来直到所有char消耗完为止.
但是有更好的方法吗?
Lou*_*man 10
Iterable<String> chunks = Splitter.fixedLength(30).split(string);
Run Code Online (Sandbox Code Playgroud)
这可以转换为List<String>例如Lists.newArrayList.
(披露:我向番石榴捐款.)
private static Collection<String> splitStringBySize(String str, int size) {
ArrayList<String> split = new ArrayList<>();
for (int i = 0; i <= str.length() / size; i++) {
split.add(str.substring(i * size, Math.min((i + 1) * size, str.length())));
}
return split;
}
Run Code Online (Sandbox Code Playgroud)
小智 4
由于您的字符串不在数组或列表中,因此您需要显式分配它们。
Matcher m = Pattern.compile(".{1,30}").matcher(s);
String s1 = m.find() ? s.substring(m.start(), m.end()) : "";
String s2 = m.find() ? s.substring(m.start(), m.end()) : "";
String s3 = m.find() ? s.substring(m.start(), m.end()) : "";
String s4 = m.find() ? s.substring(m.start(), m.end()) : "";
String s5 = m.find() ? s.substring(m.start(), m.end()) : "";
String s6 = m.find() ? s.substring(m.start(), m.end()) : "";
String s7 = m.find() ? s.substring(m.start(), m.end()) : "";
Run Code Online (Sandbox Code Playgroud)