Avatar of Richard Teasdale
Richard Teasdale
Flag for United Kingdom of Great Britain and Northern Ireland asked on

stripping elements of different length from a file name java

Hi: As a company we get a lot of orders sent in csv format by email. I use  a third party  program called 'attachment save'  which runs in outlook and saves all attachments to a particular directory. Since it is not unknown for the files from different customers to have the same name, the program adds the date. Thus an attached file j031251.csv  is saved as J0312512016-01-27 12-11.csv .
I then use java to pick out files from a certain customer (in this case always has "wp201" in his filename:

for (int i = 0; i < files.length; i++) {
            fileName = files(i).getName();   // (i put in brackets not parenthesis)
            if(fileName.contains("WP201")){
            //rename file to take date & time off    
             String abc = new String(fileName);
             String xyz = new String(abc.substring(0,(abc.length()-20))+abc.substring((abc.length()-4),abc.length()))  ;            
            //end rename file to take date & time off    
               
                File currentFile = new File(dir + "\\" + abc);
                           success = currentFile.renameTo(new File(dew + "\\" + xyz));
                if(success){        
                    System.out.println("File Copied: "+ currentFile);
                    currentFile.delete();
                }
                else System.out.println("NOT Copied: " + currentFile);          
           }
        }    
Which strips out the date and puts the file in a specific folder. It does this by counting back from the end of the file; easy as the date is always 16 characters.
However, now another customer wants special treatment; but his file is the same as a lot of other peoples files. 'Attachment save' will allow me to insert the senders address like so: "J031251XXXcustomer.co.ukYYY2016-01-27 12-11.csv", where I insert XXX and YYY as delimiters, but can choose anything. Is there a way of stripping out everything after the XXX but BEFORE the ".csv"? This is because , of course, customer addresses will be of different length and file types will be different.
Java

Avatar of undefined
Last Comment
mccarl

8/22/2022 - Mon
krakatoa

Is there a way of stripping out everything after the XXX but BEFORE the ".csv"?

- I'm just curious to ask why you'd want to insert the YYY element for this exceptional case(s), but then strip it out again . . . maybe I have misunderstood smthg.
Richard Teasdale

ASKER
No; I agree we do not need the YYY; just there as a delimiter for my purposes. Thanks!
ASKER CERTIFIED SOLUTION
krakatoa

THIS SOLUTION ONLY AVAILABLE TO MEMBERS.
View this solution by signing up for a free trial.
Members can start a 7-Day free trial and enjoy unlimited access to the platform.
See Pricing Options
Start Free Trial
GET A PERSONALIZED SOLUTION
Ask your own question & get feedback from real experts
Find out why thousands trust the EE community with their toughest problems.
Richard Teasdale

ASKER
I most certainly do! May be easy for you but not for a numbnuts like me!
Thank you very much for your prompt and able assistance.
All of life is about relationships, and EE has made a viirtual community a real community. It lifts everyone's boat
William Peck
krakatoa

Lucky strike on my part - (I mean I thought I might have read between the lines that it was something more dynamic (after all, you said the file type can change too)). But hey, if it works, great. ;)
Richard Teasdale

ASKER
the file type does change but the range is limited so I can knock out a few  blocks to cover the range of type. Thanks again
Richard Teasdale

ASKER
..but if you are still there, can I change it to cover a range of file types in one pass - ie pick up the last three characters, hold, then add back?
⚡ FREE TRIAL OFFER
Try out a week of full access for free.
Find out why thousands trust the EE community with their toughest problems.
krakatoa

I think you might like to re-open your question, as it looks to me as if a stronger and more flexible fix is needed - perhaps using a Regular Expression.


OR you might like to consider putting it up for a Gig,so that a seasoned expert can provide a proper fix. ;)
mccarl

can I change it to cover a range of file types in one pass - ie pick up the last three characters, hold, then add back?

Yes, with one tiny change to Krakatoa's answer above...

s = s.substring(0, s.indexOf("XXX")) + s.substring(s.lastIndexOf("."));

Open in new window