java—将文本转换为字符串数组,找到在第二个位置发送的字符串,并用第三个位置的字符串替换它

osh3o9ms  于 2021-06-30  发布在  Java
关注(0)|答案(2)|浏览(220)

关于这个问题,我完全不知道该怎么办。我要做的是从一串单词中提取一个单词,然后用另一个字符串中的单词替换它。例如,提示我的一个例子是:

//changeWords("Hi nice to meet you", "hi", "hello") returns ["hello", "nice", "to", "meet", "you"]

以下是我目前打印出来的内容:

public static String[] changeWords(String text, String find, String replace)
  {
     String[] words = new String[0];
     words = text.split(" ");
     if (words[0] == find) {
       words[0].set(replace);
     }
    return words;
  }

诚然,我的代码不太详细,也不太可能找到解决方案,但我想从我的代码中得到一些指导。谢谢你的帮助。

gg58donl

gg58donl1#

正如@d george所说的,您需要使用循环进行循环,并使用.equals()方法来比较字符串。你可以修改你的代码如下。。。或者使用string对象的.replacefirst()方法替换搜索字符串的第一个匹配项。试试这个

public static String[] changeWords(String text, String find, String replace)
  {
     String[] words = new String[0];
     words = text.split(" ");
     for(int i = 0; i < words.length; i++){
       if (words[i].equalsIgnoreCase(find)) {
         words[i]=replace;
         break;
       }
     }
    return words;
  }

还是这个

public static String[] changeWords(String text, String find, String replace)
{
   return text.replaceFirst(find, replace);
}

上述方法非常适合只替换搜索字符串的第一个匹配项的情况。如果要替换搜索字符串的所有出现项,则不需要使用数组,因为字符串对象附带replace方法。可以执行此操作以替换所有引用:

public static String[] changeWords(String text, String find, String replace)
  {
    return text.replace(find, replace);
  }
kyxcudwk

kyxcudwk2#

先替换,然后拆分。
既然你想匹配 find 在不区分大小写的情况下,一个简单的方法是使用 (?i) 用正则表达式。
演示:

import java.util.Arrays;

class Main {
    public static void main(String[] args) {
        // Test
        System.out.println(Arrays.toString(changeWords("Hi nice to meet you", "hi", "hello")));
    }

    public static String[] changeWords(String text, String find, String replace) {
        return text.replaceAll("(?i)(" + find + ")", replace).split(" ");
    }
}

输出:

[hello, nice, to, meet, you]

相关问题