2013-11-27 7 views
45

я использую WinForms C# .I имеют строковое значение, как показано ниже,Удалить последнюю запятую в строку C# WinForms

string Something = "1,5,12,34,"; 

Мне нужно удалить последнюю запятую в строке. Итак, как я могу удалить его?

+8

Почему у вас такой 'string'? Я предполагаю из-за цикла, который конкатенирует запятые с 'int'. Вместо этого вы можете использовать 'string.Join (", ", ints)'. Это позволяет избежать пропусков запятых в первую очередь. –

ответ

144

Попробуйте string.TrimEnd():

Something = Something.TrimEnd(','); 
+1

Это лучшее решение, потому что оно работает для всех строк, включая ситуации, когда вы не знаете заранее, если строка действительно заканчивается запятой или нет. –

3

Попробуйте string.Remove();

string str = "1,5,12,34,"; 
string removecomma = str.Remove(str.Length-1); 
MessageBox.Show(removecomma); 
11

King King's answer, конечно, права. Также Tim Schmelter's comment также является хорошим предложением в вашем случае.

Но если вы хотите действительноудалить последнюю запятую в строке, вы должны найти индекс последней запятой и удалить подобное;

string s = "1,5,12,34,12345"; 
int index = s.LastIndexOf(','); 
Console.WriteLine(s.Remove(index, 1)); 

Выход будет;

1,5,12,3412345 

Здесь в demonstration.

Это слишком маловероятно, что вы хотите этот путь, но я хочу указать его. И помните, что метод String.Remove не удаляет символ в исходной строке, он возвращает новую строку.

1

Или вы можете преобразовать его в массив символов сначала:

string Something = "1,5,12,34,"; 
char[] SomeGoodThing=Something.ToCharArray[]; 

Теперь у вас есть каждый символ indexed:

SomeGoodThing[0] -> '1' 
SomeGoodThing[1] -> ',' 

Играть вокруг него

0

Метод TrimEnd принимает символы, не строки. см: http://www.dotnetperls.com/trimend

static string TrimTrailingChars(string value) 
{ 
    int removeLength = 0; 
    for (int i = value.Length - 1; i >= 0; i--) 
    { 
    char let = value[i]; 
    if (let == '?' || 
     let == '!' || 
     let == '.') 
    { 
     removeLength++; 
    } 
    else 
    { 
     break; 
    } 
    } 
    if (removeLength > 0) 
    { 
    return value.Substring(0, value.Length - removeLength); 
    } 
    return value; 
} 
Смежные вопросы