当前位置: 首页 > 知识库问答 >
问题:

从文本文件读取时如何忽略数字?

朱保赫
2023-03-14

现在,我想存储一个如下所示的文本文件:

1个苹果

香蕉2根

3橙色

4只山猫

5卡布奇诺

以此类推到数据结构中。最好的方法是以某种方式将int映射到字符串,还是我应该制作一个数组列表?当我存储单词本身时,我应该忽略int和任何空格,只保留单词本身。在行中读取时如何忽略int?这是我现在拼凑的代码:

  public Dictionary(String filename) throws IOException {
  if (filename==null)
      throw new IllegalArgumentException("Null filename");
  else{
      try {
            BufferedReader in = new BufferedReader(new FileReader(filename));
            String str;
            int numLines=0;
            while ((str = in.readLine()) != null) {
                numLines++;
            }
            String[] words=new String[numLines];
            for (int i=0; i<words.length;i++){
                words[i]=in.readLine();
            }

            in.close();
        } catch (IOException e) {
    }
  }

}

提前感谢您的帮助!!

共有3个答案

阙辰龙
2023-03-14

您可以尝试一下正则表达式。

Pattern p = Pattern.compile("[^0-9\\s]+");
String s = "1 apple 2 oranges";

Matcher m = p.matcher(s);

while (m.find()) {
  System.out.println(m.group(0));
}

输出=

苹果

橘子

要了解正则表达式Java正则表达式教程。

上官正志
2023-03-14

这不起作用,因为您已经在文件末尾,因此in.readLine()方法将返回null。

我会使用地图来存储名称和金额...类似于这样:

HashMap<String, Integer> map = new HashMap<String, Integer>();

while( (line = br.readLine() !=null){
    //also check if the array is null and the right size, trim, etc.
    String[] tmp = line.split(" ");
    map.put(tmp[1], Integer.parseInt(tmp[0]) );
}

否则,您可以使用Scanner类进行尝试。祝你好运

南门野
2023-03-14

只需实现正则表达式的强大功能:

List texts<String> = new ArrayList<String>();
Pattern pattern = Pattern.compile("[^0-9\\s]+"); 
String text = "1 apple 2 oranges 3 carrots"; 
Matcher matcher = pattern.matcher(text); 

while (matcher.find()) { 
  texts.add(matcher.group(0)); 
} 

正则表达式现在非常流行。compile方法用于编译您的搜索模式,参数中显示的数字是为了防止在搜索中获得它们。所以它是完全安全的。使用apache的IOUtilities将文本文件转换为字符串

 类似资料:
  • 问题内容: 在Python中,我刚刚阅读了一个文本文件中的一行,并且我想知道如何编写代码以忽略该行开头带有#的注释。 我认为应该是这样的: 但是我是Python的新手,我不知道语法 问题答案: 您可以使用startswith() 例如

  • 问题内容: 我有一些代码可以从文件中读取行,我想识别行何时开始或fisrt字符(非空白)为’ ‘并忽略它,因此在while语句中添加如下内容 我有类似的东西: 如何完成代码? 问题答案:

  • 问题内容: 我想从一个文本文件(例如contactids.txt)读取整数值。在文件中我有像 我想从文本文件中读取它们…请帮助 问题答案: 您可能想要做这样的事情(如果您使用的是Java 5及更高版本) 通过Julian Grenier从数组中的文件读取整数

  • 问题内容: 我正在尝试读取文件以生成DOM文档,但是该文件包含空格和换行符,并且我试图忽略它们,但是我不能: 我在Javadoc中看到,只有在启用了验证标志的情况下,setIgnoringElementContentWhitespace方法才起作用,但是我没有文档的DTD或XML Schema。 我能做什么? 更新资料 我不喜欢引入mySelf <!ELEMENT …声明的想法,并且我尝试了Tom

  • 问题内容: 背景 大约30分钟前,我才开始使用grunt。所以,请忍受我。 但我有一个相当简单的脚本,它将查看我的js,然后将其全部压缩到一个文件中。 码 题 我的main.min.js每次都包含在编译中。这意味着我的min.js正在获得2x,4x,8x,16x等。围绕此的最佳方法是添加异常并忽略吗? 问题答案: 在src数组的 末尾 ,添加 这将排除它。!将其变成排除对象。 http://gru

  • 问题内容: 如何从Java中classpath读取文本文件? 问题答案: 在类路径上的目录中,从同一类加载器加载的类中,你应该能够使用以下任一种: 如果这些都不起作用,则表明还有其他问题。 因此,例如,使用以下代码: 而这个目录结构: 然后(使用Linux机器上的Unix路径分隔符): 结果: