我有一个项目用一个单词替换字母b和i。这个词是“大”,它包含两个字母。我必须用字母替换它。 b有鳍和我有靴子。如果我在我的阵列中替换它,我就会被替换掉,所以当f中的i被替换时,我最终会得到“fbootnbootn”。
或者我现在在代码中使用它的方式是在新字符串中替换b并在另一个字符串中替换i。
import java.util.Scanner;
public class Crypto {
public String org;
public String sb;
public String encrypt(String org){
int index1=-1;
Scanner sc = new Scanner(org);
System.out.println ("here is org "+org);
String s1[] = new String[100];
while (sc.hasNext())
{
index1++;
s1[index1] = sc.nextLine( );
System.out.println(s1[index1]);
}
for (int j=0; j <=index1; j++)
{
String NewString="";
System.out.println("array "+ s1[j]);
Scanner sc2= new Scanner (s1[j]);
while (sc2.hasNextLine())
{
String[] split =sc2.nextLine().split(" ");
int ding=0;
for (int k=0; k<(split.length); k++)
{
if (split[ding].contains("v"))
{
String nw=split[ding].replace ("v", "ag,r");
NewString = NewString +" "+ nw;
System.out.println(split[ding] + " " +NewString);
}
if (split[ding].contains("m"))
{
String nw=split[ding].replace ("m", "ssad");
NewString = NewString +" "+ nw;
System.out.println(split[ding] + " " +NewString);
}
if (split[ding].contains("g"))
{
String nw=split[ding].replace ("i", "boot");
NewString = NewString +" "+ nw;
System.out.println(split[ding] + " " +NewString);
}
if (split[ding].contains("b"))
{
String nw=split[ding].replace ("b", "fin");
NewString = NewString +" "+ nw;
System.out.println(split[ding] + " " +NewString);
}
ding++;
//NewString=NewString+" ";
org=NewString;
}
}
}
return org;
}
}
答案 0 :(得分:0)
试试这个:
public String myreplace(String s) {
String r = "";
for (int i=0; i<s.length(); i++) {
if (s.charAt(i) == 'b') {
r = r + "fin";
} else (s.charAt(i) == 'i') {
r = r + "boot";
} else {
r = r + s.charAt(i);
}
}
return r;
}
代码未编译,但您明白了
答案 1 :(得分:0)
你的事情过于复杂。 String实际上是一个字符数组,因此您可以遍历String。然后,检查下一个字符是b还是i,如果是,则将所需的替换添加到结果中。否则,只需添加该索引处的字符即可。
public class ReplaceLetters {
public static void main(String[] args) {
String original = "big";
String bReplacement = "fin";
String iReplacement = "boot";
String res = "";
for (int i = 0; i < original.length();i++) {
if (original.charAt(i) == 'b')
res += bReplacement;
else if (original.charAt(i) == 'i')
res += iReplacement;
else
res += original.charAt(i);
}
System.out.println(res);
}
}
答案 2 :(得分:0)
您是否考虑使用正则表达式查找/替换?如果没有,你应该检查一下:http://www.vogella.com/tutorials/JavaRegularExpressions/article.html。如果这没有用,那么你可以尝试逐个字符地操作String。
答案 3 :(得分:0)
我会做类似下面的事情:
我使用C#和Java编程,所以如果我混淆了一些语法,请忽略它。但是如果需要替换,请使用StringBuilder并继续添加它。在默认开关中,只需添加传入的内容。
public string encrypt(String word)
{
StringBuilder sb = new StringBuilder();
for(int i = 0; i < word.length; i++)
{
switch(word.charAt(i).ToLower())
{
case 'b' :
sb.Append("fin");
break;
....
default :
sb.Append(word.charAt(i));
}
}
return sb.toString();
}
答案 4 :(得分:0)
问题类似于在DB中的两列之间交换值,这里需要第三个变量。这是一个例子:
// string not present in your input text
String unusedString = "~~~~";
// replace "i" with the special character, output "b~~~~g"
String temp = "big".replaceAll("i", unusedString);
System.out.println(temp);
// replace "b" with "fin", output "fin~~~~g"
temp = temp.replaceAll("b", "fin");
System.out.println(temp);
// replace special character (just the old "i"s) with "boot", output "finbootg"
temp = temp.replaceAll(unusedString, "boot");
答案 5 :(得分:0)
StringUtils.replaceEach
可能会有所帮助。
public static String stringReplace(String inputString) {
String[] searchArray = new String[]{"b", "i"};
String[] replaceArray = new String[]{"fin", "boot"};
return StringUtils.replaceEach(inputString, searchArray, replaceArray);
}
Input
:大
Output
:finbootg
Input
:bbg
Output
:finfing
Input
:biib
Output
:finbootbootfin