2010-08-19 14 views
10

Я хочу обрезать конец строки, если она заканчивается на «,». Это запятая и пробел.TrimEnd() не работает

Я пробовал TrimEnd(', '), но это не работает. Это должно быть только в том случае, если строка заканчивается таким образом, поэтому я не могу просто использовать .Remove, чтобы удалить последние два символа. Как мне это сделать?

+6

Строки неизменны. Все строковые методы не изменяют строку, а возвращают новые строки. – codymanix

+0

phil, что должно произойти с '' Bar "', '" Bar, "' и '" Bar, "'? –

ответ

24
string txt = "testing, "; 
txt = txt.TrimEnd(',',' '); // txt = "testing" 

Это использует the overloadTrimEnd(params char[] trimChars) , Вы можете указать 1 или более символов, которые образуют набор символов для удаления. В этом случае запятая и пространство.

+0

хорошо, работает на меня на lable.trimend, но можете ли вы объяснить, как он работает, какая разница в txt.TrimEnd (',', '') vs txt.TrimEnd (',') –

+1

Отредактировано. 'TrimEnd (',')' не будет удалять пробелы. –

6

Попробуйте это:

string someText = "some text, "; 
char[] charsToTrim = { ',', ' ' }; 
someText = someText.TrimEnd(charsToTrim); 

работает для меня.

8

Это должно работать:

string s = "Bar, "; 

if (s.EndsWith(", ")) 
    s = s.Substring(0, s.Length - 2); 

EDIT

Давай думать об этом, это будет сделать хороший метод расширения:

public static String RemoveSuffix(this string value, string suffix) 
{ 
    if (value.EndsWith(suffix)) 
     return value.Substring(0, value.Length - suffix.Length); 

    return value; 
} 
+0

В принципе, это единственный правильный ответ, но есть ошибка: вам нужно использовать либо 'source.Substring (0, source.Length - suffix.Length)', либо 'source.Remove (source.Length - суффикс. Length) 'и т. Д. – LukeH

+0

@ LukeH: Ой! Хороший улов, спасибо! –

+0

@ LukeH: вы принимаете вопрос очень буквально, и это действительно то, что задал ОП. Но я не могу себе представить, что «Бар», «Бар» и «Бар» не следует подрезать. –

-1

"value, ".Trim().TrimEnd(",") также должен работать.

-1
if (model != null && ModelState.IsValid) 
       { 
        var categoryCreate = new Categories 
        { 
         CategoryName = model.CategoryName.TrimStart().TrimEnd(), 
         Description = model.Description.TrimStart().TrimEnd() 
        }; 
        _CategoriesService.Create(categoryCreate); 
       } 

TrimStart(). TrimEnd() == Left Обрезка и Right TRIM

+0

Этот код не обрезает ','. Также почему вы отправляете ответ на вопрос в течение 5 лет, который уже имеет принятый ответ? –

Смежные вопросы