如何替换单词中的多个值

时间:2014-01-15 22:10:40

标签: java

我有一个项目用一个单词替换字母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;
}
}

6 个答案:

答案 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)

Commons Lang 中的

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