阅读用户的一段话,用java替换特定的单词

阅读用户的一段话,用java替换特定的单词,java,Java,我们如何使用Java编写程序来读取用户的段落,并将向量中提到的特定单词替换为以下格式,即 例如,单词Happy被简化为H**** 任何帮助都将受到感谢 import java.io.*; import java.util.*; class replaceString { public static String putStars(String str) { char first_char = str.charAt(0); String ans =

我们如何使用Java编写程序来读取用户的段落,并将向量中提到的特定单词替换为以下格式,即

例如,单词
Happy
被简化为
H****

任何帮助都将受到感谢

import java.io.*;
import java.util.*;

class replaceString {

     public static String putStars(String str) {
        char first_char = str.charAt(0);

        String ans = new String();
        ans = String.valueOf(first_char);

        for(int i = 1;i < str.length(); ++i ) {
            ans = ans + "*";
        }
        return ans;
    }

    public static String replaceWords(String str, Vector<String> v1) {
        String[] words = str.split("\\W+"); //split across all types of punctuation

        String ansString = new String();

            for(String to_be_replaced : words) {
                boolean found = false;

                for(String to_replace_with : v1) {

                if(to_be_replaced.equals(to_replace_with)) {
                    //System.out.println("in");
                    ansString = ansString +putStars(to_be_replaced) +  " ";
                    found = true;

                }
            }  
                if(found == false) {
                    ansString = ansString + to_be_replaced + " ";
                }

        }
        return ansString;
    }

        public static String replaceWords1(String str, Vector<String> v1) {

        for(String currStr : v1) {
            str.replace(str, );
        }

        return ansString;
    } 


    public static void main(String args[])throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        System.out.println("Enter the paragraph that you would like to edit ");

        String s = br.readLine();

        // Let us assume some strings in our very own vector

        Vector<String> v1 = new Vector<String>();

        v1.addElement("Hello");
        v1.addElement("Hi");
        v1.addElement("Heya");
        v1.addElement("Howdy");
        v1.addElement("Howu");

        String ans = replaceWords(s, v1);

        System.out.println("Paragraph after replacement becomes\n\n"+ ans);
    }
}
import java.io.*;
导入java.util.*;
类替换字符串{
公共静态字符串putStars(字符串str){
char first_char=str.charAt(0);
字符串ans=新字符串();
ans=字符串.valueOf(第一个字符);
对于(int i=1;i

这是我当前的代码,但工作不正常

请尝试类似的方法,使用包含替换规则的映射:

    String input; //input string
    Map<String,String> mapReplace = new HashMap<String,String>();
    mapReplace.put("Hello","H****");
    Iterator<String> keys = mapReplace.keySet().iterator();
    while(keys.hasNext()){
        String key = keys.next();
        input = input.replace(input, mapReplace.get(key));
    }
字符串输入//输入字符串
Map mapReplace=新建HashMap();
maprelace.put(“你好”,“H****”);
迭代器键=mapReplace.keySet().Iterator();
while(keys.hasNext()){
String key=keys.next();
input=input.replace(输入,mapReplace.get(键));
}

使用包含替换规则的映射尝试类似操作:

    String input; //input string
    Map<String,String> mapReplace = new HashMap<String,String>();
    mapReplace.put("Hello","H****");
    Iterator<String> keys = mapReplace.keySet().iterator();
    while(keys.hasNext()){
        String key = keys.next();
        input = input.replace(input, mapReplace.get(key));
    }
字符串输入//输入字符串
Map mapReplace=新建HashMap();
maprelace.put(“你好”,“H****”);
迭代器键=mapReplace.keySet().Iterator();
while(keys.hasNext()){
String key=keys.next();
input=input.replace(输入,mapReplace.get(键));
}

可能还有其他的可能性,但这里有一个我所基于的例子:

  • 我们需要所有需要/想要匹配的单词,并将它们存储在一个数组中:

    String [] words = {"appy", "eya", "dy"};
    
  • (可选)如果您确实需要
    向量
    ,我建议您创建一个
    列表
    数组列表
    ),我们可以这样做:

    List <String> wordsToReplace = Arrays.asList(words);
    
    我将以更好、更简单的方式解释每个注释(1)、(2)、(3)的作用:

    • (1) 如链接答案所示,他们使用
      \b
      regex命令匹配整个单词,但在本例中,我们使用它匹配部分单词,而不是整个单词,因此这里不需要它

    • (2) 只有找到匹配项,我们才能在
      StringBuilder
      中填入
      *
      字符。。。如果我们不这样做,我们将得到:
      H*
      而不是
      H****
      对于
      Happy
      单词,这样我们可以确保
      列表中每个单词的
      *
      数量正确

    • (3) 我们在
      StringBuilder
      中替换
      *
      总数的匹配项,以便获得正确的输出

    上述程序产生以下输出:

    H****
    H***
    How**?
    How**? My friend lives in Pomp*** and every time I see her I say "H***" to her, she is very h****
    

    可能还有其他的可能性,但我举了一个例子:

  • 我们需要所有需要/想要匹配的单词,并将它们存储在一个数组中:

    String [] words = {"appy", "eya", "dy"};
    
  • (可选)如果您确实需要
    向量
    ,我建议您创建一个
    列表
    数组列表
    ),我们可以这样做:

    List <String> wordsToReplace = Arrays.asList(words);
    
    我将以更好、更简单的方式解释每个注释(1)、(2)、(3)的作用:

    • (1) 如链接答案所示,他们使用
      \b
      regex命令匹配整个单词,但在本例中,我们使用它匹配部分单词,而不是整个单词,因此这里不需要它

    • (2) 只有找到匹配项,我们才能在
      StringBuilder
      中填入
      *
      字符。。。如果我们不这样做,我们将得到:
      H*
      而不是
      H****
      对于
      Happy
      单词,这样我们可以确保
      列表中每个单词的
      *
      数量正确

    • (3) 我们在
      StringBuilder
      中替换
      *
      总数的匹配项,以便获得正确的输出

    上述程序产生以下输出:

    H****
    H***
    How**?
    How**? My friend lives in Pomp*** and every time I see her I say "H***" to her, she is very h****
    

    迭代输入段落中的单词(
    Scanner
    及其
    .next()
    方法),检查它们是否在向量中,如果是,请将它们替换为连接到单词长度减去一个星号的第一个字符。欢迎使用Stack Overflow,请阅读并在表单中显示您的努力。这不是一个免费的编码服务,而是一个问答网站,在那里你需要问一些具体的问题。实际上,你的问题太宽泛,因为它缺乏研究/努力来解决它