Home > Enterprise >  Stop printing line of text from a file after a character appears a second time
Stop printing line of text from a file after a character appears a second time

Time:01-25

I am currently trying to stop printing a line of text after a , character is read on that line a second time from a text file. Example; 14, "Stanley #2 Philips Screwdriver", true, 6.95. Stop reading and print out the text after the , character is read a second time. So the output text should look like 14, "Stanley #2 Philips Screwdriver". I tried to use a limit on the regex to achieve this but, it just omits all the commas and prints out the entire text. This is what my code looks like so far;

public static void fileReader() throws FileNotFoundException {
        File file = new File("/Users/14077/Downloads/inventory.txt");
        Scanner scan = new Scanner(file);
        String test = "4452";
        
        while (scan.hasNext()) {
            String line = scan.nextLine();
            String[] itemID = line.split(",", 5); //attempt to use a regex limit
            if(itemID[0].equals(test)) {
                for(String a : itemID)
                System.out.println(a);
            }//end if 
            
        }//end while    
        
    }//end fileReader

I also tried to print just part of the text up until the first comma like;

String itemID[] = line.split(",", 5);
       System.out.println(itemID[0]);

But no luck, it just prints 14. Please any help will be appreciated.

CodePudding user response:

What about something using String.indexOf and String.substring functions (https://docs.oracle.com/javase/7/docs/api/java/lang/String.html)

int indexSecondOccurence = line.indexOf(",", line.indexOf(",")   1);
System.out.println(line.substring(0, indexSecondOccurence   1));

CodePudding user response:

I'd suggest to modify your code as follows.

...
        String[] itemID = line.split(",", 3); //attempt to use a regex limit
        if(itemID[0].equals(test)) {
            System.out.println(String.join (",", itemID[0],itemID[1]));
        }
...

The split() call will produce an array with maximum 3 elements. First two will be the string pieces that you need. The last element is the remaining "tail" of the original string. Now we only need to merge the pieces back with the join() method. Hope this helps.

  • Related