gpt4 book ai didi

java - 将换行符替换为\n,将制表符替换为\t

转载 作者:太空宇宙 更新时间:2023-11-04 10:25:37 26 4
gpt4 key购买 nike

我必须将 java 源代码从下一行大括号样式转换为行尾大括号样式。

我找到了一种使用格式化字符串(使用\n 和\t)来执行此操作的方法,并且它工作得很好,但我必须从 File 中读取源代码。

以下代码

下一行大括号样式代码:

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

应转换为:

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

现在,我的处理方法如下:

上面提到的带有\n和\t的代码如下(我们将其命名为String s2)

public class Test\n" +
"{\n" +
"\tpublic static void main(String[] args)\n" +
"\t{\n" +
"\t\t// Some statements\n" +
"\t}\n" +
"}\n

然后我编写了以下代码,将其转换为行尾样式。

s2 = s2.replaceAll("\\t\\{", "{");
StringBuilder stringBuilder = new StringBuilder(s2);

for (int i = 0; i < stringBuilder.length(); i++) {
if (stringBuilder.charAt(i) == '{') {
stringBuilder.deleteCharAt(i);
stringBuilder.insert(i - 1, " {");
}
}

据我检查,这有效。

<小时/>

现在是实际问题;

当我从文件中读取时,源代码没有任何\t 和\n,我想将源代码转换为字符串,就像上面的字符串 (s2) 一样有\t 和\n。

<小时/>

为了澄清,我使用以下方法从输入中读取:

File sourceFile = new File("oldFormattedSourceCode.txt");
String oldFormatString = "";
try (Scanner input = new Scanner(sourceFile);) {
while (input.hasNext()) {
oldFormatString += input.nextLine();
}
System.out.println("Old Format String is: " + oldFormatString.toString());
} catch (FileNotFoundException ex) {
System.out.print(ex.getMessage());

}

这给了我以下输出

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

这个字符串对我来说没有用,因为它没有\n 和\t,我编写的代码依赖于这些。

请提出建议。

最佳答案

不要使用扫描仪来读取文件,而是使用FileReader

try (FileReader input = new FileReader(sourceFile);) {
int i = 0;
StringBuffer sb = new StringBuffer();
while ((i=input.read())!=-1) {
sb.append((char)i);
}
oldFormatString = sb.toString();
System.out.println("Old Format String is: " + oldFormatString.toString());
} catch (FileNotFoundException | IOException ex) {
System.out.print(ex.getMessage());
}

如果您使用FileReader,您可以读取单个字符,因此您不会错过任何字符。

关于java - 将换行符替换为\n,将制表符替换为\t,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50564616/

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