如何在Java中格式化文件中的文本?

时间:2015-10-21 07:18:02

标签: java eclipse split hex

我正在开始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)"

非常感谢。

2 个答案:

答案 0 :(得分:1)

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

import java.util.StringTokenizer;

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

 import java.util.*;

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

(因为你正在使用Eclipse,你可以用错误标记该行,点击CTRL + 1,它会建议修复你的错误,或者CTRL + SHIFT + o来添加缺少的导入)

答案 1 :(得分:0)

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

import java.util.StringTokenizer;

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

此时,行总是具有空值(while循环仅在line == null时结束)。

你必须在阅读该行之后处理while循环中的 行。

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

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