首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java8中的字符串操作

Java8中的字符串操作
EN

Stack Overflow用户
提问于 2019-04-01 12:53:39
回答 3查看 273关注 0票数 2

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

在Java8中有一些与字符串操作有关的问题,但它们都无助于解决我的问题。

代码语言:javascript
复制
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“。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-04-01 13:28:40

您可以将Stream::generateCollectors::collectingAndThenCollectors::joining组合起来,以获得一个单行解决方案,尽管它并不比these ones

代码语言:javascript
复制
public static String padd10(String str) {
    return Stream.generate(() -> "0")
            .limit(str.length() >= 10 ? 0 : 10 - str.length())
            .collect(Collectors.collectingAndThen(
              Collectors.joining(), str.substring(0, Math.min(str.length(), 10))::concat));
}

然后叫它

代码语言:javascript
复制
System.out.println(padd10("123"));
System.out.println(padd10("1234567800"));
票数 1
EN

Stack Overflow用户

发布于 2019-04-01 14:10:41

这肯定不是Stream的任务。如果您仍然希望这样做,但尽量减少可读性和性能的损失,则可以使用以下内容

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

一个直截了当的方法是

代码语言:javascript
复制
int cap = Math.min(s.length(), 10);
String s1 = s.substring(0, cap)+"0000000000".substring(cap);

代码语言:javascript
复制
int cap = Math.min(s.length(), 10);
String s1=new StringBuilder(10).append(s, 0, cap).append("0000000000", cap, 10).toString();
票数 4
EN

Stack Overflow用户

发布于 2019-04-01 13:07:08

如果有Java11,则可以使用新的String.repeat方法。

只需找出你需要多少个零int n = 10 - s.length();

然后添加s1 = s + "0".repeat(n);

在Java 8中,可以使用流生成零

代码语言:javascript
复制
String zeros = Stream.generate(() -> "0").limit(n).collect(Collectors.joining());

s1 = s + zeros
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55455622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档