String.Trim()
возвращает строку, которая равна входной строке со всеми пробелами , обрезанными от начала и end:
" A String ".Trim() -> "A String"
String.TrimStart()
возвращает строку с пробелами, обрезанными с начала:
" A String ".TrimStart() -> "A String "
String.TrimEnd()
возвращает строку с пробелами, обрезанными с конца:
" A String ".TrimEnd() -> " A String"
Ни один из методов не изменяет исходный строковый объект.
(По крайней мере, в некоторых реализациях, если нет пробелов, которые нужно обрезать, вы возвращаете тот же строковый объект, с которого вы начали:
csharp> string a = "a";
csharp> string trimmed = a.Trim();
csharp> (object) a == (object) trimmed;
returns true
Я не знаю, гарантируется ли это языком.)