我有一个包含这些类型值的文本文件(示例):
5 Dog 23 45 Cat 97 23 Mouse 13 23 Bird 10 23 Dog 99 18
第一个数字'5'是我需要标记化的数组对象的总数。我想要它,以便当我对文本文件进行标记时,它会忽略'5'然后将它们读为:
Dog 23 45
Cat 97 23
Mouse 13 23
Bird 10 23
Dog 99 18
然后将所有相同的对象放在一个数组中。所以例如狗arraylist会有:
Dog 23 45
Dog 99 18
我只是想知道如何将一个单词标记为后跟两个带空格的数字。任何形式的帮助将不胜感激。
答案 0 :(得分:0)
您可以使用java.io.BufferedReader逐行读取文件。
BufferedReader reader = new BufferedReader(new FileReader("/path/to/file.txt"));
String line = null;
while ((line = reader.readLine()) != null) {
// ...
}
教程:基本I / O> I / O流>角色流
您可以使用String#split()将String拆分为部分。
String[] parts = line.split("\\s");
教程:数字和字符串>字符串>操作字符串中的字符
您可以使用增强的for循环来迭代String部分。
for (String part : parts) {
// ...
}
教程:语言基础>控制流程语句> for Statement
您可以使用Integer#valueOf()将String转换为整数。
Integer i = Integer.valueOf(part);
教程:界面>列表界面
您可以使用List#add()将元素添加到List。
list.add(i);
教程:试用:收藏
答案 1 :(得分:0)
使用模式:
@Test
public void testPattern() {
String value = "5 Dog 23 45 Cat 97 23 Mouse 13 23 Bird 10 23 Dog 99 18";
Matcher matcher = Pattern.compile("(\\D+)\\d+\\s++\\d+").matcher(value);
while (matcher.find()) {
System.out.println(matcher.group() + ": " + matcher.group(1));
}
}
输出是:
Dog 23 45: Dog
Cat 97 23: Cat
Mouse 13 23: Mouse
Bird 10 23: Bird
Dog 99 18: Dog