private string InterleaveInvalidChars( string text, char invChar1, char invChar2 ) {
StringBuilder sb = null;
int start = 0;
int i;
for ( i = 0; i < text.Length; i++ ) {
if ( text[i] != invChar2 ) {
continue;
}
if ( i > 0 && text[i-1] == invChar1 ) {
if ( sb == null ) {
sb = new StringBuilder( text.Length + 5 );
}
sb.Append( text, start, i - start );
sb.Append( ' ' );
start = i;
}
}
// check last char & return
if ( sb == null ) {
return ( i == 0 || text[i-1] != invChar1 ) ? text : ( text + ' ' );
}
else {
sb.Append( text, start, i - start );
if ( i > 0 && text[i-1] == invChar1 ) {
sb.Append( ' ' );
}
return sb.ToString();
}
}
}