I would maybe do something like this:
public static string[] MyCustomSplit(string input, List<string> reservedWords)
{
List<string> outputLines = new List<string>();
string[] lines = input.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
foreach (string line in lines)
{
if (!string.IsNullOrWhiteSpace(line))
{
string[] parts = line.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
List<string> lineParts = new List<string>();
foreach (string part in parts)
{
if (!reservedWords.Contains(part))
{
lineParts.Add(part);
}
}
outputLines.Add(string.Join(" ", lineParts.ToArray()));
}
}
return outputLines.ToArray();
}
and then
string sample = "Mountain View XX,Lake";
List<string> reservedWords = new List<string>() { "XX" };
string[] test = MyCustomSplit(sample, reservedWords);
which results with:
string[0] = Mountain View
string[1] = Lake
Or something like this:
public static string[] MyCustomSplitAndCleanup(string input)
{
List<string> outputLines = new List<string>();
string[] lines = input.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
foreach (string line in lines)
{
if (!string.IsNullOrWhiteSpace(line))
{
string[] parts = line.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
List<string> lineParts = new List<string>();
for (int index = 0; index < parts.Length; index++ )
{
string part = parts[index];
int numericValue = 0;
bool validPart = true;
if (int.TryParse(part, out numericValue))
{
if (index == 0 || index == parts.Length - 1)
{
validPart = false;
}
}
if (validPart)
{
lineParts.Add(part);
}
}
outputLines.Add(string.Join(" ", lineParts.ToArray()));
}
}
return outputLines.ToArray();
}
which covers this:
string sample1 = "Mountain View 32,Lake";
string sample2 = "17 Park place,Something";
string[] test1 = MyCustomSplitAndCleanup(sample1);
string[] test2 = MyCustomSplitAndCleanup(sample2);
"Mountain View {0},Lake"instead, you can switch tostring.Format. If you just have that:"Mountain View XX,Lake".Replace("XX,", "");