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