gpt4 book ai didi

java - Java8 中的字符串操作

转载 作者:行者123 更新时间:2023-11-29 08:23:27 25 4
gpt4 key购买 nike

我用 Java7 编写了一些代码来操作字符串。如果字符串大小 >= 10,它将返回大小为 10 的子字符串,但如果大小 < 10,它将在字符串中追加 0。我想知道是否有一种方法可以使用流和 lambda 在 Java8 中编写相同的代码。

有一些与 Java8 中的字符串操作相关的问题,但没有一个对我的问题有帮助。

String s = "12345678";
String s1 = s;

if(s.length() >= 10) {
s1 = s1.substring(0,10);
}
else {
for (int k = s.length() ; k < 10 ; k++) {
s1 = s1 + "0";
}
}

我期望输出字符串“1234567800”。

最佳答案

这肯定不是 Stream API 的任务。如果您仍然想这样做,但最大限度地减少可读性和性能的损失,您可以使用类似的东西

String s1 = IntStream.range(0, 10)
.map(i -> i<s.length()? s.charAt(i): '0')
.collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append)
.toString();

直接的方法是

int cap = Math.min(s.length(), 10);
String s1 = s.substring(0, cap)+"0000000000".substring(cap);

int cap = Math.min(s.length(), 10);
String s1=new StringBuilder(10).append(s, 0, cap).append("0000000000", cap, 10).toString();

关于java - Java8 中的字符串操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55455622/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com