在数组上操作字符串

时间:2013-06-03 16:07:37

标签: java arrays elements

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

2 个答案:

答案 0 :(得分: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”。

我发布的代码是REAL简单的,它只适用于这种特殊情况(正如我所理解的),如果你想创建一个为任何字符串做这个的方法,你需要改变一些东西,但我会把它留给你。

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

我创建String []的唯一原因是因为这是你在问题中所说的,否则我会像创建resultOfReplacement一样简单地创建一个String变量。要访问数组中的第一个元素,可以执行arrayVariable [index]。这里我使用Java附带的“replaceFirst”函数来处理String类型的变量。如果您查看方法,它会告诉您它将查找第一个参数的第一个匹配,并将其替换为第二个参数。

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

这将会发生:

该方法将在“ABBCCBBAA”中查找第一个<第一个时间“AA”,并将其替换为“A”。结果是“返回”,如果您想要访问它以对其执行更多操作,则必须将其分配给变量。在这种情况下,我将它分配给一个新的String变量。您可能刚刚分配回[0],这可能是您想要的。

(You'd do so like this:
    a[0]=ourArrayOfStrings[0].replaceFirst("AA", "A"); 
)

对于第二次更换,该方法将首次在“ABBCCBBA”中显示“BB”并将其替换为“BA”。

看模式?这只是一个开始,根据您的需要,您可能需要其他方法,如“replaceAll()”。

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

答案 1 :(得分:1)

正则表达式对您来说非常方便。代码bellow可以做,你的工作使用正则表达式:

   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.