Damn You Newegg!!
Step one. Admit to yourself that you know nothing about regular expressions, and that it's more of a black art than anything.
Step two. google.com. How to split a single pascal cased word into multiple words.
Step three. Let the cursing begin.
Step four. Write your own regex to solve your problem, it's just a tool, right?
Step five: More cursing.
Step six: Note the time, several hours have passed and nothing. This is the f*ck it stage.
Step seven: Write plain ol' C# in 10 minutes using SnippetCompiler to get the job done.
Step eight: When it comes to work that has to get done for $$, always skip to step seven.
The Super Duper PascalCased Word Splitter
public static IEnumerable SplitPascal(string pascalCasedWord){
if (String.IsNullOrEmpty(pascalCasedWord))
yield return null;
List buffer = new List();
for(int i=0;i 0 && i > 0 && !Char.IsUpper(buffer[buffer.Count-1])){
yield return new String(buffer.ToArray());
buffer.Clear();
}
}
buffer.Add(c);
}
if(buffer.Count > 0)
yield return new String(buffer.ToArray());
}
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
Usage:
List words = new List(SplitPascal("AgencySystemComponent"));
Debug.Assert(words.Count == 3, "should have 3 words but had " + words.Count);
Debug.Assert(words[0] == "Agency", "first word should be Agency but was " + words[0]);
Debug.Assert(words[1] == "System", "second word should be System but was " + words[1]);
Debug.Assert(words[2] == "Component", "third word should be Component but as " + words[2]);
|
|
1
2
3
4
5
|
Any regular expression advice is appreciated.