【问题标题】:Java: Reverse string via a delimiterJava:通过分隔符反转字符串
【发布时间】:2020-04-03 23:54:38
【问题描述】:

我正在尝试反转由我提供的分隔符分隔的字符串中的字符。

输入:string: "Abc.134dsq"delimiter: "."

所需输出:cbA.qsd431

我的尝试:

String fileContent = "Abc.134dsq";
String delimiter = ".";
fileContent = fileContent.replace(delimiter, "-");
String[] splitWords = fileContent.split("-");
StringBuilder stringBuilder = new StringBuilder();
for (String word : splitWords) {
    StringBuilder output = new StringBuilder(word).reverse();
    stringBuilder.append(output);
}

System.out.println(stringBuilder.toString());

【问题讨论】:

  • (1) 按分隔符拆分字符串,(2) 反转每个部分,(3) 将它们重新连接在一起。你在哪一步有问题?请向我们展示您的最佳尝试。 (顺便说一句,每个步骤在 Stack Overflow 上已经有单独的问题)。
  • 本网站不是代码编写服务。我们可以帮助您解决有关您的代码的具体问题,最好附上MCVE
  • 这是 Java 8+ 中单个语句中的一种方式,但您可能不会理解它,因为如果可以,您至少可以自己编写解决方案的一部分,所以如果您需要任何有用的解决方案,您需要在问题中更加具体。无论如何,这里是:Pattern.compile(Pattern.quote(".")).splitAsStream("Abc.134dsq").map(s->new StringBuilder(s).reverse()).collect(Collectors.joining("."))
  • @Andreas 这很好用。谢谢
  • 请注意,我的解决方案将删除任何尾随 .,添加到问题中的代码也将删除。

标签: java string algorithm reverse


【解决方案1】:

试试这个:

System.out.println(Arrays
    .stream("Abc.134dsq".split("\\.", -1))
    .map(StringBuilder::new)
    .map(StringBuilder::reverse)
    .collect(Collectors.joining(".")));

live demo

这处理了 cmets 中提到的“保留尾随点”场景。现场演示也展示了这方面。

你的作业截止日期已经过去了,所以我想我会给你看这个单行字。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-31
    • 2014-03-02
    • 1970-01-01
    • 2013-10-30
    • 2013-03-03
    • 1970-01-01
    相关资源
    最近更新 更多