繁体   English   中英

用不同的字符替换字符串占位符

[英]Replacing String placeholders with different characters

我正在使用Java进行入门课程,我有一个新作业,在其中我使用文件处理来创建Mad Lib游戏。

我想知道最好的方法是用“ cool”之类的形容词代替String占位符

这是我的代码的一小部分

 PrintStream fileOutput = new PrintStream(new File(fileName));
 Scanner fileScan = new Scanner(new File(fileName));
  while (fileScan.hasNextLine()) {
     String line = fileScan.nextLine();
     Scanner word = new Scanner(line);
     while (word.hasNext()) {
        String token = word.next();
        if (token.startsWith("<") && token.endsWith(">")) {
           token = token.replace("<", "");
           token = token.replace(">", "");
        }
        fileOutput.print(token + " ");
     }
  }

目前,我已经照顾好了'<'和'>'字符,但是我不确定最好的方法是替换两个括号之间的字符。 例如,如果我确定令牌是占位符并且是形容词,则我会提示用户使用正确的a / an结构“键入形容词”和名词“键入名词”。 在过去的工作中,我会得到正确的外部正确性,但是我的风格是“不好”或“不正确”

我不确定这是否是您要找的答案,但我会给您一个机会。 似乎您可能对以下几件事感兴趣:

PrintWriter是一个Java类,允许您写入文件,而不是像使用Scanner一样扫描文件。 如果您打算基于带有形容词,动词等标签的模板生成疯狂的libs响应,那么您可能想要做的就是扫描文件,并在解析它们时将内容写入新的输出中。 要获取用户输入,可以使用一个单独的Scanner对象,该对象从System.in获取值。 例如,您将要使用类似:

PrintWriter writer = new PrintWriter(file);
Scanner scanner = new Scanner(file);
Scanner input = new Scanner(System.in);

(your previous code here)

if (token.startsWith("<") && token.endsWith(">")
{
    System.out.println("Type a " + token + ":";
    writer.write(input.next());
}
else
{
    writer.write(token);
}

这显然不是完美的,但希望您能理解。 如果在扫描每个单词时未检测到标签,则将该单词写入文件。 如果检测到标签,则让用户定义在其位置写的内容。 继续执行文件的其余部分。

编辑:我只是回去,看到您使用PrintStream。 那会做同样的事情。 我回答的目的主要是概念的证明。

这样的事情怎么样:

Scanner input = new Scanner(System.in);
// ...
    while (word.hasNext()) {
        String token = word.next();
        if (token.startsWith("<") && token.endsWith(">")) {
            token = token.substring(1, token.length() - 1);
            String article = token.matches("(?i)[aeiou].*") ? "an" : "a";
            System.out.println("Type " + article + " " + token);
            token = input.next();
        }
        fileOutput.print(token + " ");
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM