gpt4 book ai didi

java - 使用 Text I/O 重新格式化源代码

转载 作者:行者123 更新时间:2023-11-30 09:18:30 25 4
gpt4 key购买 nike

我正在通过教科书自学 Java 编程。一个练习要求你编写一个重新格式化整个源代码文件的程序(使用命令行):

从这种格式(下一行大括号样式):

public class Test
{
public static void main(String[] args)
{
// Some statements
}
}

到这种格式(行尾大括号样式):

public class Test {
public static void main(String[] args) {
// Some statements
}
}

这是我目前的代码:

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

public class FOURTEENpoint12 {

public static void main(String[] args) throws IOException {

if (args.length != 2) {
System.out.println
("Usage: java FOURTEENpoint12 sourceFile targetFile");
System.exit(1);
}

File sourceFile = new File(args[0]);
File targetFile = new File(args[1]);

if (!sourceFile.exists()) {
System.out.println("File does not exist");
System.exit(2);
}

Scanner input = new Scanner(sourceFile);
PrintWriter output = new PrintWriter(targetFile);

String token;


while (input.hasNext()) {
token = input.next();
if (token.equals("{"))
output.println("\n{\n");
else
output.print(token + " ");

}

input.close();
output.close();
}

我有两个问题:

  1. 我已经尝试了许多不同的 while block ,但无法得到任何接近本书要求的内容。我已经尝试了正则表达式、定界符、标记数组的不同组合,但仍然有很大差距。

  2. 该书要求您重新格式化单个文件,但该章从未解释如何执行此操作。它仅说明如何将文本重写到新文件中。所以我只是编写了创建一个新文件的程序。但我真的很想按照问题的要求去做。

如果有人能帮我解决这两个问题,它实际上会解决我在很多练习中遇到的许多问题。提前致谢。

最佳答案

这对于一个简单的 regular expression 是可行的.

您想将 ) *任何空白字符* { 替换为 ) {

在 java 正则表达式中,有一个预定义的正则表达式:\s 匹配所有空白字符:[\t\n\x0B\f\r]

在这里,您想将 )\s*{ 替换为 ) {

为此,将整个文件加载到一个字符串中(在下面称为 input)并使用 String#replaceAll(String regex, String replacement) :

//Added the escape characters...
input.replaceAll("\\)\\s*\\{", ") {");

测试:

String input = "public static void main()    \n    {";
System.out.println(input.replaceAll("\\)\\s*\\{", ") {"));

输出:

public static void main() {

关于java - 使用 Text I/O 重新格式化源代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18444199/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com