Не обрезать пробелы из строки в c #

1

Функция Trim() не работает Пожалуйста, помогите ей не обрезать пробел.

string samplestring = "172-6573-4955";  
string[] array = samplestring .Split('-');
string firstElem = array.First();
string restOfArray = string.Join(" ", array.Skip(1));
array[1] = restOfArray.Trim(); // providing value "6573 4955" 

Сценарий заключается в том, что я разделяю строку и объединяю второй и последний индексы в один, но слияние с пробелами.

  • 1
    Вы объединяетесь с пустой пробелом string.Join(" ", rest..) , поэтому пробел всегда будет добавляться. Замените его на "" или используйте статистическую функцию. Более того, Trim удаляет только начальные и конечные пробелы.
  • 0
    @ Soner Gönül String. Пустой, как кто-то предположил, лучше по производительности? Да, это была конечная проблема, работающая гладко, спасибо! В самом деле, но может ли кто-нибудь случайно генерировать пробелы между вызовами метода string.join? цель - иногда вставлять пробелы, иногда - нет.
Теги:

6 ответов

3
Лучший ответ

Trim() удаляет пробелы спереди и сзади строки, а не в середине. Пробелы в середине вставляются с помощью параметра " " представленного в качестве параметра метода Join(). string.empty этого вы можете string.empty.

  • 0
    +1 Спасибо, брат
2

Trim используется для удаления всего верхнего и заднего пробелов. И вы хотите обрезать белое пространство посредине. Вы можете попробовать следующее:

string restOfArray = string.Join("", array.Skip(1)); 

или лучше:

string restOfArray = string.Join(string.Empty, array.Skip(1)); 

вместо

string restOfArray = string.Join(" ", array.Skip(1)); 
  • 1
    Я думаю, что лучше основано на мнении
  • 0
    @RT Пожалуйста, проверьте, я редактировал мой комментарий выше.
Показать ещё 4 комментария
0

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

string samplestring = "172-6573-4955";
string[] array = samplestring.Split(new char[] {'-'},2);
string result = array[1].Replace("-","");

Кроме того, для вашего вопроса о случайном размещении пробелов, вы можете объяснить "случайным образом" здесь.

0

Чтобы просто разделить первый n-let от остальных, используйте дополнительный массив или вы получите ложные данные. И присоединитесь к правильному разделителю, который вы использовали в split (-):

string restOfArray = string.Join("-", array.Skip(1));
string[] result = new string[] { firstElem, restOfArray };

Вам не нужен Trim().

Вы можете упростить код таким образом:

string[] splitCode(string code)
{
    string[] segments;

    segments = code.Split('-');

    return new string[] { segments.First(), string.Join("-", segments.Skip(1)) };
}
0

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

string source = "172-6573-4955";  
string[] splitter = new string[] {"-"};
string[] result;
result = source.Split(splitter, StringSplitOptions.None);
string final = (result[1] + result[2]);
Console.Write(final);

Результат:

65734955

0

Trim работает как ожидалось. Взято из метода String.Trim:

Удаляет все символы верхнего и нижнего пробелов из текущего объекта String.

Возможные решения для вас:

string restOfArray = string.Join(string.Empty, array.Skip(1)); 

Или

 array[1] = restOfArray.Replace(" ", string.Empty).Trim();

Ещё вопросы

Сообщество Overcoder
Наверх
Меню