java - 有没有一种方法可以将 2 个字符串输入 1 个字符串并且不影响彼此的输入?

标签 java regex string eclipse

假设我有 ABab,我想将 A 替换为 ACac,将 a 替换为 CAca....。我尝试的输出给了我 ACCAcacBCacab 当它应该是 ACacBCacab 我不确定如何绕过这个因为你可以看到它也改变了小写字母 a输入 Acac。我希望能够将这些一直输入到 Z,如您所见 haha,这是我的代码:

import java.util.*;
public class Nails 
{
    public static void main(String[] args) 
    {
        Scanner i = new Scanner(System.in);
        String[][] comms = { { "ACac", "CAca" }, { "ADad", "DAda" }, { "AEae", "EAea" }, { "AFaf", "FAfa" },
        { "AGag", "GAga" }, { "AHah", "HAha" }, { "AIai", "Iaia" }, { "AJaj", "JAja" }, { "AKak", "KAka" },
        { "ALal", "LAla" }, { "AMam", "MAma" }, { "ANan", "NAna" }, { "AOao", "OAoa" }, { "APap", "PApa" },
        { "AQaq", "QAqa" }, { "ARar", "RAra" }, { "ASas", "SAsa" }, { "ATat", "TAta" }, { "AUau", "UAua" },
        { "AVav", "VAva" }, { "AWaw", "WAwa" }, { "AXax", "XAxa" }, { "AYay", "YAya" }, { "AZaz", "ZAza" } };

        String Master = "ABab";
        String S = Master; //Slave String
        String Tmp = S; 
        System.out.println("Amount of Nails: ");
        int N = i.nextInt(); //Nails
        if(N < 2)
        {
            System.out.println("Sorry, You Must input a number Greater than or Equal to 2");
        }
        if(N == 2)
        {
            System.out.println(Master);
        }
        else
        {
            for(int c = 0; c < N - 2; c++) //C for Counter, subtracting 2 because method wont run if it is <= 2 and 'Comms' starts on 0 which would be 3 Nails
            {
                System.out.println(S);
                S = S.replace("A", Comms[c][0]);
                S = S.replace("a", Comms[c][1]);
                System.out.println(S);
            }
        }
    }
}

小写字母代表大写字母的组合,这就是为什么每添加 1 个“Nail”就有 2 个条目。我正在制作这个程序,以便能够为这个谜题创建一个公式生成器: Nail Puzzle .如果有帮助,视频创作者还会解释一些数学原理。 谢谢。

最佳答案

您可以使用占位符。将字符替换为占位符,将占位符替换为实际的字符串。

import java.util.*;

public class Q47028607 {
  public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    String[][] comms = { { "ACac", "CAca" }, { "ADad", "DAda" }, { "AEae", "EAea" }, { "AFaf", "FAfa" },
        { "AGag", "GAga" }, { "AHah", "HAha" }, { "AIai", "Iaia" }, { "AJaj", "JAja" }, { "AKak", "KAka" },
        { "ALal", "LAla" }, { "AMam", "MAma" }, { "ANan", "NAna" }, { "AOao", "OAoa" }, { "APap", "PApa" },
        { "AQaq", "QAqa" }, { "ARar", "RAra" }, { "ASas", "SAsa" }, { "ATat", "TAta" }, { "AUau", "UAua" },
        { "AVav", "VAva" }, { "AWaw", "WAwa" }, { "AXax", "XAxa" }, { "AYay", "YAya" }, { "AZaz", "ZAza" } };
    String master = "ABab";
    System.out.println("Amount of Nails: ");
    int N = scanner.nextInt();
    if (N < 2) {
      System.out.println("Sorry, You Must input a number Greater than or Equal to 2");
    } else if (N == 2) {
      System.out.println(master);
    } else {
      for (int c = 0; c < N - 2; c++) {
        System.out.println(master);
        master = master.replace("A", "$1");
        master = master.replace("a", "$2");
        master = master.replace("$1", comms[c][0]);
        master = master.replace("$2", comms[c][1]);
        System.out.println(master);
      }
    }
    scanner.close();
  }
}

关于java - 有没有一种方法可以将 2 个字符串输入 1 个字符串并且不影响彼此的输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47028607/

相关文章:

Python正则表达式模式拼图

javascript - 用于达到最大字符数加上单词结尾的正则表达式(如果适用)

Rust 中的字符串相等性 : how does referencing and dereferencing work?

java - NullPointerException,是什么导致了我的错误?

java - Spring Mvc 和 MediaType 用于在 @RequestMapping 中使用获取休息请求

java - Jasper Report 中的动态图像大小

c - 如何检索字符串的一部分?

java - Spring Security - 无效的列索引异常

regex - 方括号内字符的正则表达式

javascript - 对于JS字符串,s === “”是否始终与s.length == 0相同?