В зависимости от того, что вы пытаетесь сделать:
for(int k = 0; k < myString.Length; k++)
{
if(myString[k].IsWhiteSpace())
{
// do something with it
}
}
Выше приведен один проход через строку, поэтому это O (n).Вы не можете добиться большей эффективности, чем это.
Однако, если вы хотите манипулировать исходной строкой, лучше всего использовать StringBuilder для обработки изменений:
StringBuilder sb = new StringBuilder(myString);
for(int k = 0; k < myString.Length; k++)
{
if(myString[k].IsWhiteSpace())
{
// do something with sb
}
}
Наконец, не забывайте о регулярных выражениях.Это не всегда самый эффективный метод с точки зрения сложности времени выполнения кода, но с точки зрения эффективности кодирования это может быть хорошим компромиссом.
Например, вот способ сопоставить все пробелы:
var rex = new System.Text.RegularExpressions.Regex("[^\\s](\\s+)[^\\s]");
var m = rex.Match(myString);
while(m.Success)
{
// process the match here..
m.NextMatch();
}
А вот способ заменить все пробелы произвольной строкой:
var rex = new System.Text.RegularExpressions.Regex("\\s+");
String replacement = "[white_space]";
// replaces all occurrences of white space with the string [white_space]
String result = rex.Replace(myString, replacement);