3

我对 Java 还是很陌生,我想了解字符串和数组,所以我产生了操纵元素并根据我的目标放置它们的想法。目标是会有字符串数组“ABBCCCBBAA”,并且必须将“AA”、“BB”替换为“A”,将“BA”、“AB”替换为CC。"CC","BC" 变成 B。我基本上不知道如何实现它,但我知道它必须有字符串数组。请帮忙

4

2 回答 2

1

我假设“字符串数组”是指:

String[] myvariable = new String[number];
myvariable[0] = "ABBCCBBAA";
myvariable[1] = "some_other_string";

如果您是 Java 新手,我建议您阅读Head First Java之类的初学者书籍,并查看 Java 文档;如果您使用像样的 IDE 进行编程,您甚至不必走那么远,例如 Netbeans(由于其智能感知功能)是您所寻求的文档的来源(这意味着您可以查看所有可用的方法对于一个字符串,阅读他们的工作,看看他们是否可以帮助完成你需要的东西)。

我假设(根据您所说)您想将“AA”替换为“A”,并从该结果中将“BB”替换为“BA”,并从该结果中将“AB”替换为“CC”,并且从那个结果“BC”变成“B”。

我发布的代码非常简单,它只适用于这种特殊情况(正如我所理解的那样),如果你想创建一个对任何字符串执行此操作的方法,你需要更改一些东西,但我把它留给你。

String[] yourArrayOfStrings = new String[1];
yourArrayOfStrings[0] = "ABBCCBBAA";

String resultOfReplacement= yourArrayOfStrings[0].replaceFirst("AA", "A");
System.out.println(resultOfReplacement); //debugging purposes

resultOfReplacement = resultOfReplacement.replaceFirst("BB", "BA");
System.out.println(resultOfReplacement); //debugging purposes

resultOfReplacement = resultOfReplacement.replaceFirst("AB", "CC");
System.out.println(resultOfReplacement); //debugging purposes

resultOfReplacement = resultOfReplacement.replaceFirst("BC", "BB");
System.out.println(resultOfReplacement); //debugging purposes

我创建 a 的唯一原因String[]是因为这就是您在问题中所说的,否则我会像使用 resultOfReplacement 一样简单地创建一个字符串变量。要访问数组中的第一个元素,请执行arrayVariable[index]. 这里我使用replaceFirstJava 自带的函数来处理 type 的变量String。如果您查找该方法,它会告诉您它将查找第一个参数的第一个匹配项并将其替换为第二个参数。

System.out.println我添加的内容是出于调试目的,因此您可以在控制台上看到每次替换时明显发生的情况。所以,我第一次调用replaceFirst(...)原始字符串是a[0].

这将发生:

该方法将在“ABBCCBBAA”中第一次且仅在第一次出现“AA”时将其替换为“A”。结果是“返回”,如果您想访问它以对其执行更多操作,则必须将其分配给一个变量。在这种情况下,我将它分配给一个新的 String 变量。您可能刚刚分配回a[0],这可能是您想要的。(你会这样做a[0]=ourArrayOfStrings[0].replaceFirst("AA", "A");:)

对于第二次替换,该方法将在“ABBCCBBA”中第一次出现“BB”并将其替换为“BA”。

看到图案了吗?这只是一个开始,根据您的需要,您可能需要其他方法,例如replaceAll().

当您通过“.”访问变量时,大多数 IDE 会告诉您哪些方法可用于变量,因此当您输入“variablename.”时,应该会出现可用的方法列表,如果它们没有的话你可以继续做一个像ctrl+这样的快捷方式space,让它出现并通过箭头键浏览方法,这样你就可以阅读它们的作用(至少对于 Eclpise 和 Netbeans,在使用 Java 编程时,它可以工作)。文档就是力量!

于 2013-06-03T16:41:58.943 回答
1

正则表达式对您来说非常方便。下面的代码可以使用正则表达式来完成您的工作:

   String mainStr = "ABBCCCBBAA";

    Pattern p = Pattern.compile("(AA)|(BB)|(BA)|(AB)|(CC)|(BC)");
    Matcher m = p.matcher(mainStr);

    while (m.find()) {
        String matchedStr = m.group(0);

        if("AA".equals(matchedStr) || "BB".equals(matchedStr)){
            mainStr = mainStr.replaceFirst(matchedStr,"X");
        }

        else if("BA".equals(matchedStr) || "AB".equals(matchedStr)){
            mainStr = mainStr.replaceFirst(matchedStr,"Y");
        }
        else if("CC".equals(matchedStr) || "BC".equals(matchedStr)){
            mainStr = mainStr.replaceFirst(matchedStr,"Z");
        }
    }
    mainStr = mainStr.replaceAll("X","A").replaceAll("Y","CC").replaceAll("Z","B");
    System.out.println(mainStr);

上面的代码将处理给定字符串中多次出现相同模式的情况,例如:

ABBCCCBBAABBBBAA

将产生输出:

CCBBAAAAA.
于 2013-06-03T16:55:30.197 回答