views:

276

answers:

5

I am trying to read in a text input file that contains a list of filenames (one per line). However, I am running into an issue if the user double-quotes the path (because it has a space in it).

For example, a normal input file might have:
C:\test\test.tiff
C:\test\anothertest.tiff
C:\test\lasttest.tiff

These get read in fine by my code ("C:\\test\\test.tiff" etc)

However, if I have the following input file:
"C:\test with spaces\test.tiff"
"C:\test with spaces\anothertest.tiff"
"C:\test with spaces\lasttest.tiff"

These get read in double-quotes and all ("\"C:\\test with spaces\\test.tiff\"" etc). This becomes a problem when I try to open the files (I understandably get invalid character exceptions). My question is, how do I fix this? I want to allow users to input quoted strings and handle them correctly. My first impression was to just write a little method that strips off beginning or ending quotes, but I thought there might be a better way.

+1  A: 

My first impression was to just write a little method that strips of beginning or ending quotes...

Yeah, that's what I'd do, too. =)

Jens
A: 

If you have only one file per line you can just do Regex.Replace(PathLine,"\"","")

If you don't you will need to split every time PathLine.Split(new string[] { "\" ", "\"\n" }, StringSplitOptions.RemoveEmptyEntries); then strip out the beginning "

Scott Chamberlain
A: 

I think RegEx is quite heavy compared to a simple replace, so

File.ReadAllText(path.Replace('"',''));

Or similar would be my suggestion.

Antony Koch
+2  A: 

No need for a RegEx where a simple Replace will do:

var s = s.Replace("\"", "");
RedFilter
+1  A: 

Maybe try using string literals?

string bob = @"c:\some file\some document";

The @ escapes these backslash problems.

Chris
The problem is this input data from users. I could do this if I were hardcoding the strings, but this is being read in from a file.
KrisTrip