【问题标题】:How do I format text from file in Java?如何在 Java 中格式化文件中的文本?
【发布时间】:2015-10-21 07:18:02
【问题描述】:

我正在开始学习 Java 课程,我的第一个任务是从 Java 文件中格式化文本。我做了一些研究,但我只是在互联网上找不到答案。 我有一个包含多行的 css 文件,我必须格式化它的内容。到目前为止,我设法将内容读取到控制台,输出如下所示:

.fa-vimeo:before { content: "\f27d"; }
.fa-black-tie:before {content: "\f27e";}
.fa-fonticons:before { content: "\f280";}

现在我只想格式化它,让它看起来像这样:

VIMEO(62077) // the number in quotes is hexadecimal and I want to convert it to decimal

这是我尝试过的

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.StringTokenizer;
 class CreateCssEnum
 {
 public static void main(String[] args) throws IOException
 {
  FileReader fr = new FileReader("D:\\eclipse\\font-awesome.css");
BufferedReader br = new BufferedReader(fr);

String line = null;
while ((line = br.readLine()) != null) {
     StringTokenizer tok = new StringTokenizer(line, "-:\"\" ");
      String a = tok.nextToken();
      String b = tok.nextToken();

    System.out.println(a.toUpperCase() + b);
}
br.close();
}

}

-->我在收到改进的帮助时编辑了代码

但现在我收到错误消息:

"Exception in thread "main" .FAglass
 CONTENT\f000
java.util.NoSuchElementException
at java.util.StringTokenizer.nextToken(Unknown Source)
at CreateCssEnum.main(CreateCssEnum.java:16)"

非常感谢。

【问题讨论】:

  • 该错误听起来像是您缺少import 语句。如果在 Eclipse 中按 Ctrl-Shift-O,它会将所有缺少的 import 语句添加到文件顶部。
  • 顺便说一句,完成后,您可能希望将代码发布到 codereview.stackexchange.com :)

标签: java eclipse split hex


【解决方案1】:

StringTokenizer 的文档是 here。 它说它是java.util 包的一部分。所以你需要导入它。要么只导入 StringTokenizer:

import java.util.StringTokenizer;

或者从 java.util 中导入所有内容。

 import java.util.*;

字符串 "-:"" " 也有错误,我不知道你想在那里做什么,但这不是 Java 中的有效字符串文字。也许您需要转义内部引号"-:\"\" "

(由于您使用的是 Eclipse,因此您可以用错误标记行,按 CTRL+1,它会建议修复您的错误,或者 CTRL+SHIFT+o 来添加缺少的导入)

【讨论】:

  • 哇,谢谢,我导入了包,现在我只收到一个错误令牌“”“”上的语法错误,删除这个令牌。但我需要将 qoutes 设置为字符,以便代码知道从哪里减去我的字符串
  • 你不能用双引号来转义它们。只需使用反斜杠来转义双引号。你想要"-:\" "
【解决方案2】:

您必须在使用之前导入StringTkenizer。将此行放在文件的顶部,就在 package 声明之后:

import java.util.StringTokenizer;

另一个问题是您正在 while 循环之外创建 StringTokenizer

此时,line 始终具有 null 值(while 循环仅在 line == null 时结束)。

您必须在读取该行之后循环内处理每一行。

顺便说一句,您可以使用每个 String 对象默认具有的方法 split(),而不是使用 StringTokenizer

看看String.split (java.lang.String)

【讨论】:

  • 你是对的,这就是我不能调用字符串的原因。我将其定义为空。我会更新我的代码
  • 是的。我注意到您还需要导入。我已经更新了答案
  • 虽然我推荐你使用 split 而不是 StringTokenizer
猜你喜欢
  • 2013-08-03
  • 1970-01-01
  • 2012-03-08
  • 1970-01-01
  • 2011-10-22
  • 1970-01-01
  • 1970-01-01
  • 2015-12-05
  • 2017-08-09
相关资源
最近更新 更多