我想将字符串拆分为固定长度,例如,拆分20个字符,如果拆分后长度小于20个字符,则用最多20个字符的空格填充字符串。
public static List<String> splitEqually(String text, int size) {
List<String> ret = new ArrayList<String>((text.length() + size - 1) / size);
for (int start = 0; start < text.length(); start += size) {
ret.add(text.substring(start, Math.min(text.length(), start + size)));
}
return ret;
}
我使用上面的代码按相等大小进行拆分。
与λ
String blanks20 = " ";
ArrayList<String> fixed20 = list.stream().collect( Collector.of( ArrayList::new,
(l, s) -> {
for(int i = 0; ; s = s.substring( 20 )) {
l.add( (s + blanks20).substring( i, i + 20 ) );
if( s.length() < 20 )
break;
} },
(l, r) -> { l.addAll( r ); return( l ); } ) );
只有最后一个值可能不是给定的大小,因此如果需要,请在循环后用空格填充它。
public static List<String> splitFixedWidth(String text, int width) {
List<String> ret = new ArrayList<>((text.length() + width - 1) / width);
for (int start = 0; start < text.length(); start += width) {
ret.add(text.substring(start, Math.min(text.length(), start + width)));
}
if (! ret.isEmpty()) {
String lastValue = ret.get(ret.size() - 1);
if (lastValue.length() < width) {
lastValue += " ".repeat(width - lastValue.length());
ret.set(ret.size() - 1, lastValue);
}
}
return ret;
}
在低于11的Java版本中,使用:
if (lastValue.length() < width) {
char[] buf = new char[width];
lastValue.getChars(0, lastValue.length(), buf, 0);
Arrays.fill(buf, lastValue.length(), width, ' ');
ret.set(ret.size() - 1, new String(buf));
}
或者更短但效率更低:
if (lastValue.length() < width) {
ret.set(ret.size() - 1, String.format("%-" + width + "s", lastValue));
}
此代码将解决您的问题。
public static List<String> splitEqually(String text, int size) {
List<String> ret = new ArrayList<String>((text.length() + size - 1) / size);
StringBuilder str1 = new StringBuilder();
for (int start = 0; start < text.length(); start += size) {
String temp = text.substring(start, Math.min(text.length(), start + size));
if (temp.length() == size) {
ret.add(temp);
System.out.println(temp.length());
} else {
int n = size - temp.length();
str1.append(temp);
for (int j =0 ; j< n ; j++){
str1.append(" ");
}
System.out.println(str1.length());
ret.add(str1.toString());
}
}
return ret;
}
问题内容: 我需要产生固定长度的字符串以生成基于字符位置的文件。缺少的字符必须用空格字符填充。 例如,字段CITY具有15个字符的固定长度。对于输入“芝加哥”和“里约热内卢”,输出为 。 问题答案: 从Java 1.5开始,我们可以使用方法java.lang.String.format(String,Object …) 并使用类似于printf的格式。 格式字符串可以完成这项工作。其中表示参数索引
我需要产生固定长度的字符串来生成一个基于字符位置的文件。缺少的字符必须用空格字符填充。 例如,字段CITY具有15个字符的固定长度。对于输入“芝加哥”和“里约热内卢”,输出为
问题内容: 我确信很多地方都可以找到它,但是我不知道我要执行的操作的确切名称,因此我无法真正查找它。我已经读了30分钟的Python官方书,试图找出方法。 问题:我需要将字符串放在一定长度的“字段”中。 例如,如果名称字段的长度为15个字符,而我的名字是John,则将得到“ John”,后跟11个空格以创建15个字符的字段。 我需要使用它来为变量“ name”输入任何字符串。 我知道这可能是某种格
问题内容: 给定输入字符串,例如,在Go中将其拆分为字符串数组的最佳方法是什么?请注意,每个单词之间可以有_任意_数量的空格或Unicode空格字符。 在Java中,我只会使用。 (注意:在Go中使用正则表达式可能重复的Split字符串不会给出任何高质量的答案。请提供实际示例,而不仅仅是提供指向或包引用的链接。) 问题答案: 所述封装具有一个方法。 演示: http : //play.golang
我正在做一个赋值,它需要一个以字符串和int为参数的方法。该方法应该用空格填充参数字符串,直到它的长度是给定的长度。例如,padString(“你好”,8应该返回“hello___”(_代表三个空格))如果int高于字符串的长度,那么它将简单地返回字符串。我很难关闭程序的“填充”部分。 由于这个任务是本书的早期内容,我假设它可以用初学者的东西来完成,例如forloops、参数和常见的字符串方法,因
问题内容: 我需要用空格分割我的字符串。为此,我尝试: 但这似乎不起作用。 问题答案: 你所拥有的应该工作。但是,如果提供的空格默认为…其他内容?你可以使用空格正则表达式: 这将导致任意数量的连续空格将你的字符串拆分为标记。 附带说明一下,我不确定“ splited”是不是一个词:)我相信成为split的受害者的状态也是“ split”。这是那些棘手的语法问题之一:-)不要试图变得挑剔,只是想我会