对于作业,我必须阅读包含电影脚本的文件,并编写一些方法,将某些字符转换为给定其他参数的另一个字符。例如,如果'r'跟随元音(a,e,i,o,u),我试图通过线搜索并将任何'r'转换为'h'。我正在寻找基本的java语法。以下是我阅读文本的主要内容,然后:
package jaws.accent;
import java.io.*;
import java.util.*;
public class JawsAccent {
public static char convert(Scanner in ) {
String word = in .nextLine();
char r = 'r';
if ((word.contains("a") || word.contains("a") || word.contains("a") || word.contains("a") || word.contains("u"))) {
r.replace(r, 'h');
}
return r;
}
public static void main(String[] args)
throws FileNotFoundException {
File jaws = new File("JawsScript.txt");
Scanner input = new Scanner(jaws);
while (input.hasNextLine()) {
String line = input.nextLine();
System.out.println(line);
}
}
}
答案 0 :(得分:0)
有许多方法可以做到这一点。我假设老师打算让你在生成输出的同时逐步浏览一个数据。因此,您可以通过维护布尔值或检查先前的索引来检查前面是否是元音。在这里,我展示了一个简单的for循环,它允许您遍历字符串的每个字符串(让我们假设字符串不包含非BMP代码点):
public class SampleJava {
public static String transformation(String line) {
StringBuilder toReturn = new StringBuilder();
boolean afterVowel = false;
for(char c : line.toCharArray()) {
char out = c;
switch(c) {
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
afterVowel = true;
break;
case 'r':
if(afterVowel) out = 'h';
// fall-through
default:
afterVowel = false;
}
toReturn.append(out);
}
return toReturn.toString();
}
public static void main(String[] args) throws FileNotFoundException {
File jaws = new File("JawsScript.txt");
Scanner input = new Scanner(jaws);
while (input.hasNextLine()) {
String line = input.nextLine();
line = transformation(line);
System.out.println(line);
}
}
}
RegEx版本:
如果教师允许您使用regular expression patterns,则转换代码可能会短得多。但是,除非您学习RegEx文档和示例一段时间,否则您可能很难理解它们的编写方式和工作原理。
public static String transformation(String line) {
return line.replaceAll("(?<=[aeiou])r", "h");
}
答案 1 :(得分:-1)
String result = Files.readAllLines(Paths.get("a.txt")).stream()
.map(l -> l.replaceAll("ar","ah"))
.map(l -> l.replaceAll("er","eh"))
.map(l -> l.replaceAll("ir","ih"))
.map(l -> l.replaceAll("or","oh"))
.map(l -> l.replaceAll("ur","uh"))
.reduce((e,o) -> e.concat("\n").concat(o))
.get();
System.out.println(result);
简单易读的代码。