【问题标题】:String in Core Java核心 Java 中的字符串
【发布时间】:2019-09-19 05:35:03
【问题描述】:

当String有一个字符'e','m',',那么它应该分别插入"s","d",在那个字符之后。 2.当它找到空格时,它应该打印单词的长度。(在附加两种情况之前和之后) 3.'j' 应该替换为字符串中的'k'

字符串输入来自用户。

对于案例 1 和 2,我正在考虑使用 StringBuilder。但不知道如何实现。

谁能帮帮我?

字符串输入来自用户。 谁能帮帮我?

import java.util.*;
import java.lang.*;

public class strReplace {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        System.out.println("Enter the String : ");
        String str = sc.nextLine().toLowerCase();
        String str1 = str.replace('a', '@');
    }
}

【问题讨论】:

  • 你能举出2的例子吗?只要找到空格,它就应该打印单词的长度。
  • @GauravJeswani 示例:输入:“谁可以回答”输出:谁 3 可以 3 回答 6
  • 在下面查看我修改后的答案#3
  • 而长度应该在替换前考虑还是替换后point1?
  • @GauravJeswani 不确定如何处理这两种情况。在附加字符之前和附加字符之后。如果你能同时展示这两种情况,那将会很有帮助!

标签: java string substring


【解决方案1】:

应用我的伪代码:

StringBuilder output = new StringBuilder();
int prevSpaceIndex = 0;
 for each character in this string
      case 'e','m','t','i': :
        //append character at `i` and the following special character.
        break;
        case 'a':
           //append '@' in this case.
           break;
        case ' ':
           //append length of word and reset it.
           break;
      default: 
        //append to output for other cases.
        break;  

我删除了关于以下评论的实现。给你一个想法。

【讨论】:

  • @Stultuske:你认为我从某个地方复制了我的答案吗:D?给我看看原来的帖子。
  • @Stultuske,我知道了。我不会为他做所有的事情。这不是一个完整的解决方案。
  • 据我所知,唯一缺少的是对 m、t 和 i 的处理。为了添加它,您实际上并不需要知道自己在做什么。你也知道在代码审查期间会给出什么评论吗?
  • 删除了我的实现 :-)
  • 您还应该删除 String.valueOf。 StringBuffer 有一个追加,它需要一个字符
【解决方案2】:

你可以这样做:

1) 替换字符

2) 递归计算长度

public static void main(final String[] args) {

    // Take input from user, using scanner
    Scanner sc = new Scanner(System.in);
    System.out.println("Enter the String : ");
    String a= sc.nextLine().toLowerCase();

    //Replace the characters
    a = a.replaceAll("e", "e#");
    a = a.replaceAll("m", "m$");
    a = a.replaceAll("t", "t%");
    a = a.replaceAll("i", "i&");
    a = a.replaceAll("a", "@");

    final int startIndex = 0;

    final int indexOfSpace = a.indexOf(" ");

    //Length calculation after replacement
    if (indexOfSpace > 0) {
      a = replaceSpaceWithLength(a, startIndex, indexOfSpace);

    }

    System.out.println(a);

  }

  private static String replaceSpaceWithLength(String s, int startIndex, int indexOfSpace) {

    s = s.substring(0, indexOfSpace) + " " + (indexOfSpace - startIndex) + " "
        + s.substring(indexOfSpace + 1, s.length());

    int length = indexOfSpace - startIndex;
    startIndex = indexOfSpace + 2;

    // Calculate the total number in previous words, if 5 it's 1 and if 15 it's 2
    do {

      length = length / 10;

      ++startIndex;

    } while (length % 10 > 1);

    indexOfSpace = s.indexOf(" ", startIndex);

    if (indexOfSpace > 0) {
      s = replaceSpaceWithLength(s, startIndex, indexOfSpace);
    } else {

      // Else condition for last word, as there is no space
      final int lengthOfLastWord = s.length() - startIndex;

      s = s + " " + lengthOfLastWord;
    }

    return s;
  }

输入:你好世界!!!!!!!

输出: he#llo 6 world!!!!!!! 12

注意:您可以使用扫描仪获取用户输入。而且由于我使用过 String 性能不会很好,但对你来说很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-22
    • 1970-01-01
    • 2023-02-07
    • 1970-01-01
    • 1970-01-01
    • 2017-05-02
    • 2011-09-26
    相关资源
    最近更新 更多