OK! I think i've cracked it.. This is now totally generic and if you come back to me and tell me this doesn't work, I give up!!!
Or:Code:import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
public class csv {
public static void main(String[] args) throws Exception {
// File path & name
String filepath = "csv.txt";
// Read in file to determine how many lines it has
FileInputStream in = new FileInputStream(filepath);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String strLine;
int counter = 0;
while ((strLine = br.readLine()) != null)
{
counter++;
}
in.close();
// Read in file
FileInputStream in2 = new FileInputStream(filepath);
BufferedReader br2 = new BufferedReader(new InputStreamReader(in2));
String strLine2;
// Declare array
String[] myarray;
myarray = new String[counter];
// Add each line to the array
for (int i = 0; i < myarray.length; i++){
myarray[i] = br2.readLine();
}
in2.close();
// Loop through array looking for the correct text, format & print
for (int c = 0; c < myarray.length; c++){
if(myarray[c].contains("INVOICE NO") | myarray[c].contains("invoice No") ){
String[] split = myarray[c+1].split(" ");
String invoicePt1 = "";
String invoicePt2 = "";
String dated = "";
for (int i = 0; i < split.length; i++){
if (split[i].length() == 4 &! split[i].contains("-")){
invoicePt1 = split[i].replace("\"", "");
}
if (split[i].length() > 1 &! split[i].contains("-")){
invoicePt2 = split[i].replace("\"", "");
}
else
{
dated = split[i].replace("\"", "").trim();
}
}
System.out.println("INVOICE NO: " + invoicePt1 + " " + invoicePt2);
System.out.println("Dated: " + dated);
}
if(myarray[c].contains("Buyer's Order")){
String[] split = myarray[c+1].split(" ");
String buyersDate = "";
String buyersOrder = "";
for (int i = 0; i < split.length; i++){
if (split[i].length() > 1 &! split[i].contains("-")){
buyersOrder = split[i].replace("\"", "");
}
if (split[i].length() > 1 & split[i].contains("-")){
buyersDate = split[i].replace("\"", "");
}
}
System.out.println("Buyer's Order No: " + buyersOrder );
System.out.println("Dated: " + buyersDate.trim());
}
}
}
}
Based on the csv file you attached above. This is the output:Code:import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
public class csv {
public static void main(String[] args) throws Exception {
// File path & name
String filepath = "csv.txt";
// Read in file to determine how many lines it has
FileInputStream in = new FileInputStream(filepath);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String strLine;
int counter = 0;
while ((strLine = br.readLine()) != null)
{
counter++;
}
in.close();
// Read in file
FileInputStream in2 = new FileInputStream(filepath);
BufferedReader br2 = new BufferedReader(new InputStreamReader(in2));
String strLine2;
// Declare array
String[] myarray;
myarray = new String[counter];
// Add each line to the array
for (int i = 0; i < myarray.length; i++){
myarray[i] = br2.readLine();
}
in2.close();
// Loop through array looking for the correct text, format & print
for (int c = 0; c < myarray.length; c++){
if(myarray[c].contains("INVOICE NO") | myarray[c].contains("invoice No") ){
String[] split = myarray[c+1].split(" ");
String invoicePt1 = "";
String invoicePt2 = "";
String dated = "";
for (int i = 0; i < split.length; i++){
if (split[i].contains("Jan") &! split[i].contains("-")){
invoicePt1 = split[i].replace("\"", "");
}
if (split[i].contains("Feb") &! split[i].contains("-")){
invoicePt1 = split[i].replace("\"", "");
}
if (split[i].contains("Mar") &! split[i].contains("-")){
invoicePt1 = split[i].replace("\"", "");
}
if (split[i].contains("Apr") &! split[i].contains("-")){
invoicePt1 = split[i].replace("\"", "");
}
if (split[i].contains("May") &! split[i].contains("-")){
invoicePt1 = split[i].replace("\"", "");
}
if (split[i].contains("Jun") &! split[i].contains("-")){
invoicePt1 = split[i].replace("\"", "");
}
if (split[i].contains("Jul") &! split[i].contains("-")){
invoicePt1 = split[i].replace("\"", "");
}
if (split[i].contains("Aug") &! split[i].contains("-")){
invoicePt1 = split[i].replace("\"", "");
}
if (split[i].contains("Sep") &! split[i].contains("-")){
invoicePt1 = split[i].replace("\"", "");
}
if (split[i].contains("Oct") &! split[i].contains("-")){
invoicePt1 = split[i].replace("\"", "");
}
if (split[i].contains("Nov") &! split[i].contains("-")){
invoicePt1 = split[i].replace("\"", "");
}
if (split[i].contains("Dec") &! split[i].contains("-")){
invoicePt1 = split[i].replace("\"", "");
}
if (split[i].length() > 1 &! split[i].contains("-")){
invoicePt2 = split[i].replace("\"", "");
}
else
{
dated = split[i].replace("\"", "").trim();
}
}
System.out.println("INVOICE NO: " + invoicePt1 + " " + invoicePt2);
System.out.println("Dated: " + dated);
}
if(myarray[c].contains("Buyer's Order")){
String[] split = myarray[c+1].split(" ");
String buyersDate = "";
String buyersOrder = "";
for (int i = 0; i < split.length; i++){
if (split[i].length() > 1 &! split[i].contains("-")){
buyersOrder = split[i].replace("\"", "");
}
if (split[i].length() > 1 & split[i].contains("-")){
buyersDate = split[i].replace("\"", "");
}
}
System.out.println("Buyer's Order No: " + buyersOrder );
System.out.println("Dated: " + buyersDate.trim());
}
}
}
}
:DCode:INVOICE NO: Feb 08/Pur/21
Dated: 20-Feb-2008
Buyer's Order No: EKA78JN080662
Dated: 20-Mar-2008
