First, I'd suggest looking at csv parsers (just swap the comma for the semi-colon). Dealing with strings inside csv strings is a problem that has been looked into in detail under the guise of CSV Parsing:
this one looks good and lists the Quote character as something it deals with:
A Fast CSV Reader[
^]
This would be my first choice
Another option might be to use Regular Expressions focusing on look-ahead and look-behind groups. This can be a little overwhelming if you have not used it before.
My final suggestion would be to Split my the Quote character first, then split by the semi-colon.
A word of warning: Some of the options will not work if there is a chance of having a malformed string (i.e. un-paired quote chars):
var strings = mystring.Split('"');
List<string> result;
if(strings.Length>1){
if(strings[0][strings[0].Length-1]!=';'
Throw new Exception("You get the idea");
result.AddRange(strings[0].Split(';');
for(int x = 1; x < strings.Length - 2; x++){
result.AddRange(strings[x].Split(';');
}
result.AddRange(strings[last].Split(';');
}
return result.ToArray();
Hope that helps ^_^
Andy