替换字符串中的特定字符而不使用Java中的replace方法

时间:2017-10-05 03:12:17

标签: java replace char string-parsing

我不允许使用replace()方法,我基本上必须有一部分程序来执行此操作:

- 要求用户键入要操作的句子。 - 然后要求用户输入要替换的字符(即" e"来自"你好")。 - 然后问他们想要用哪个字符代替。

完成所有这些后,它会将操纵的字符串输出到屏幕。

实施例

  • console:请输入一个字符串:
  • 用户:您好
  • console:请输入要替换的角色:
  • user:e
  • console:请输入一个字符替换为:
  • user:l
  • console:新字符串是:嗨thlrl

我基本上可以使用以下代码执行此操作:

    int count = 1;
    char replaceAll = 'a';
    char newChar = 'b';
    Scanner keyboard = new Scanner(System.in);

    System.out.println("Enter the string to be manipulated");
    String sentence = keyboard.nextLine();

        int count = 0;
        System.out.println("Enter the character to replace");
        replaceAll = keyboard.nextLine().charAt(0);
        System.out.println("Enter the new character");
        newChar = keyboard.nextLine().charAt(0);
        System.out.print("The new sentence is: ");

        for(int c = 0; c < sentence.length(); c++){
            if(sentence.charAt(c) == replaceAll)
                System.out.print(newChar);
            else
                System.out.print(sentence.charAt(c));

主要问题:唯一的问题是,这不会将操纵的字符串保存为新字符串。它只会以正确的顺序打印字母进行输出(它一次打印一个字符,而不是一个字符串)。我需要将被操纵的字符串(即Hi thlrl)保存为新字符串,以便我可以在之后对该新字符串进行更多操作。

5 个答案:

答案 0 :(得分:1)

您可以根据char[]大小声明sentence,然后循环填充它。

  char[] ch = new char[sentence.length()];

  for(int c = 0; c < sentence.length(); c++)
   {
        if(sentence.charAt(c) == replaceAll)
        {
            System.out.print(newChar);
            ch[c]=newChar;
        }
        else
        {
            System.out.print(sentence.charAt(c));
            ch[c]=sentence.charAt(c);
         }
     }         

其他可能的解决方案是,您可以使用char[]

创建toCharArray()
  char[] ch = sentence.toCharArray();

  for(int c = 0; c < sentence.length(); c++)
   {
        if(sentence.charAt(c) == replaceAll)
        {
            ch[c]=newChar;
        }
   }

并使用String创建char[]

  String mystring = new String(ch);

答案 1 :(得分:1)

如果它是Stringbuffer / StringBuilder,那么更简单的是使用setCharAt

   StringBuilder sentenceStr = new StringBuilder(sentence); 
   sentenceStr.setCharAt(c, newChar);

答案 2 :(得分:0)

您可以使用split将字符串剪切成片段,每次出现要替换的字符时,然后join将其重新组合在一起。例如,

String.join("l", "Hello there".split("e", -1));

评估为"Hllllo thlrl"

请注意,-1很重要 - 它会阻止最终元素被丢弃,如果它是您要分割的那个元素。

答案 3 :(得分:0)

你可以初始化一个空字符串,当你遍历你的句子字符串时,你可以像这样建立一个新的空字符串:

String result = "";
for(int c = 0; c < sentence.length(); c++) {
    if(sentence.charAt(c) == replaceAll) {
        result += newChar;
    } else {
       result += sentence.charAt(c);
    }
 }
System.out.println(result);

答案 4 :(得分:0)

/* char 'o' 替换为 char 'd' 不带替换功能 */

    String oldString = "welcome mojo";

    String[] StringArray = oldString.split("");

    String newString = "";

    int count = StringArray.length;

    for (int i = 0; i < count; i++) {

        if (StringArray[i].equalsIgnoreCase("o")) {

            StringArray[i] = "d";
        }

        newString = newString + StringArray[i];

    }
    System.out.println(newString);