我正在开始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)"
非常感谢。
答案 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()
。