不使用.replace()替换方法

时间:2014-05-05 14:42:21

标签: java replace

好的,所以我需要创建一个程序,根据字符串替换字符串中的单词,并给出替换。 (在这种情况下用英国取代英国)

以下是我的代码,但它不起作用

import java.util.*;
public class replace
{
    public static void main(String[]args){
        replace("The UK should not be written as uk", "UK", "United Kingdom");
    }

    static void replace(String input, String seed, String replacement){
        String s = "";
        ArrayList<String> bla = new ArrayList<String>();
        for(int i = 0; i < input.length();i++){
            if(input.charAt(i) != ' '){
                s = s + input.charAt(i);
            }
            if(input.charAt(i) == ' ' || i+1 == input.length()){
                bla.add(s);
                s = "";
            }
        }

        String out = "";
        for(int i = 0; i < bla.size(); i++){
            if(bla.get(i) == seed){
                bla.set(i, replacement);
            }
        }

        for(int i = 0; i < bla.size(); i++){
            out = out + bla.get(i)+ " ";
        }

        System.out.println(out);

   }
}

由于某种原因,它没有用替换

替换我的变量
 String out = "";
            for(int i = 0; i < bla.size(); i++){
                if(bla.get(i) == seed){
                    bla.set(i, replacement);
                }
            }

为什么会出现这种情况?

提前致谢

1 个答案:

答案 0 :(得分:1)

替换:

if(bla.get(i) == seed)

使用:

if(bla.get(i).equals(seed))

第一个比较参考,第二个相等。

您还应该使用StringBuilder来连接字符串,并将其保留在循环中:

ArrayList<String> bla = new ArrayList<String>();
for(int i = 0; i < input.length(); i++) {
    StringBuilder s = new StringBuilder();

    if(input.charAt(i) != ' ')
        s.append(input.charAt(i));

    if(input.charAt(i) == ' ' || i+1 == input.length())
        bla.add(s.toString());
}

使用StringBuilder效率更高。