[英]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.