简体   繁体   中英

How to extract ONLY words from a txt file in Java

So I have to extract data from a text file.

The text file is set up like this.

3400      Moderate
310       Light
etc.

I need to extract the numbers, store them in one array, and the strings, and store them in another array so I can do calculations to the numbers based on whats written in the array, and then output that to a file. I've got the last part down, I just cant figure out how to separate the ints from the strings when I extract the data from the txt. file.

Here is what I have now, but it's just extracting the int and the word as a String .

import java.io.*;
import java.util.*;

public class HorseFeed {
public static void main(String[] args){

    Scanner sc = null;
    try {
        sc = new Scanner(new File("C:\\Users\\Patric\\Desktop\\HorseWork.txt"));
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    List<String> lines = new ArrayList<String>();
    while (sc.hasNextLine()) {
      lines.add(sc.nextLine());
    }

    String[] arr = lines.toArray(new String[0]);

    for(int i = 0; i< 100; i++){
        System.out.print(arr[i]);
    }

}

}

Use split(String regex) in String class. Set the regex to search for whitespaces OR digits. It will return a String[] which contains words.

If you are analyzing it line by line, you would want another String[] in which you would append all the words from the new lines.

plz, follow the code.

import java.io.*;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class HorseFeed {

    public static void main(String[] args) throws FileNotFoundException, IOException {

        List<String> lineList = new ArrayList<String>();
        BufferedReader br = new BufferedReader(new FileReader(new File("C:\\Users\\Patric\\Desktop\\HorseWork.txt")));
            String line;
            while ((line = br.readLine()) != null) {
                Pattern pattern = Pattern.compile("[0-9]+");
                Matcher matcher = pattern.matcher(line);
                if( pattern.matcher(line).matches()){  
                    while(matcher.find()){
                        lineList.add(matcher.group());
                    }

                }
            }
        }

    }

here lineList contains your integer.

This should work:

import java.io.*;
import java.util.*;

public class HorseFeed {

    public static void main(String[] args) throws FileNotFoundException {
        List<Integer> intList = new ArrayList<Integer>();
        List<String> strList = new ArrayList<String>();

        Scanner sc = new Scanner(new File("C:\\Users\\Patric\\Desktop\\HorseWork.txt"));
        while (sc.hasNextLine()) {
            String line = sc.nextLine();
            String[] lineParts = line.split("\\s+");
            Integer intValue = Integer.parseInt(lineParts[0]);
            String strValue = lineParts[1];
            intList.add(intValue);
            strList.add(strValue);
        }

        System.out.println("Values: ");
        for(int i = 0; i < intList.size(); i++) {
            System.out.print("\t" + intList.get(i) + ": " + strList.get(i));
        }
    }

}   

First extract all text of file and stored it into String . then use replaceall method of string class with pattern to remove digits from it. example-

String fileText=new String("welcome 2 java");

fileText=fileText.replaceAll("-?\\d+", "");

System.out.println(ss);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM