none
Работа с массивом строк RRS feed

  • Вопрос

  • Добрый день!

    Есть массив строк типа:

    "     "
    
    "   "
    
    "Иван Иванов"
    
    "     40 лет"
    
    ""
    
    " Программист"

    Как видно, некоторые строки начинаются с пробелов, а некоторые содержат только пробелы либо и вовсе пустые.

    Вопрос следующий: как собственно избавится от пробелов в начале нормальной строки и как удалить строки из массива, которые пустые или содержат один или несколько пробелов ?

    23 июня 2014 г. 17:31

Ответы

  • Как-то так:

    List <string> list = new List<string>(); foreach (string s in arr) { string s2 = s.Trim(); // удаляем пробелы в начале и в конце if (!string.IsNullOrEmpty(s2)) { list.Add(s2); // непустые сохраняем в новом массиве } }



    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!


    • Изменено kosuke904 23 июня 2014 г. 19:12
    • Помечено в качестве ответа Alexander2106 24 июня 2014 г. 15:06
    23 июня 2014 г. 19:10
  • Сами пустые строки удалить не получится, если это обычный массив. Вместо этого вам придётся использовать коллекцию или из существующего получить новый. А удалить пробелы можно при помощи регулярного выражения.

    using System;
    using System.Text.RegularExpressions;
    
    namespace ConsoleApplication
    {
        class Program
        {
            static void Main()
            {
                string value = "  Test test";
                Console.WriteLine(Regex.Replace(value, @"^\s+", ""));
            }
        }
    }


    Сделаем содержимое сообщества лучше, вместе!

    • Помечено в качестве ответа Alexander2106 24 июня 2014 г. 15:06
    23 июня 2014 г. 19:14
    Модератор
  • Можно так (source - исходный массив строк)

    var result = source.Where(s => !string.IsNullOrWhiteSpace(s)) // берем все не пустые строки
    .Select(s => s.Trim()) // убираем пробелы в начале и конце строк
    .ToArray(); // профит :)

    В зависимости от того, надо ли оставлять пробелы в конце строки, можно использовать TrimStart() вместо Trim().


    • Изменено AndreyVeselovMVP 24 июня 2014 г. 4:26
    • Помечено в качестве ответа Alexander2106 24 июня 2014 г. 15:06
    24 июня 2014 г. 4:22

Все ответы

  • Здравствуйте. Не плохо было бы еще узнать язык программирования и тип Вашего приложения.

    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    23 июня 2014 г. 18:48
  • Извиняюсь :)

    c#, wpf

    23 июня 2014 г. 18:52
  • Как-то так:

    List <string> list = new List<string>(); foreach (string s in arr) { string s2 = s.Trim(); // удаляем пробелы в начале и в конце if (!string.IsNullOrEmpty(s2)) { list.Add(s2); // непустые сохраняем в новом массиве } }



    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!


    • Изменено kosuke904 23 июня 2014 г. 19:12
    • Помечено в качестве ответа Alexander2106 24 июня 2014 г. 15:06
    23 июня 2014 г. 19:10
  • Сами пустые строки удалить не получится, если это обычный массив. Вместо этого вам придётся использовать коллекцию или из существующего получить новый. А удалить пробелы можно при помощи регулярного выражения.

    using System;
    using System.Text.RegularExpressions;
    
    namespace ConsoleApplication
    {
        class Program
        {
            static void Main()
            {
                string value = "  Test test";
                Console.WriteLine(Regex.Replace(value, @"^\s+", ""));
            }
        }
    }


    Сделаем содержимое сообщества лучше, вместе!

    • Помечено в качестве ответа Alexander2106 24 июня 2014 г. 15:06
    23 июня 2014 г. 19:14
    Модератор
  • Можно так (source - исходный массив строк)

    var result = source.Where(s => !string.IsNullOrWhiteSpace(s)) // берем все не пустые строки
    .Select(s => s.Trim()) // убираем пробелы в начале и конце строк
    .ToArray(); // профит :)

    В зависимости от того, надо ли оставлять пробелы в конце строки, можно использовать TrimStart() вместо Trim().


    • Изменено AndreyVeselovMVP 24 июня 2014 г. 4:26
    • Помечено в качестве ответа Alexander2106 24 июня 2014 г. 15:06
    24 июня 2014 г. 4:22
  • Всем спасибо большое!

    24 июня 2014 г. 15:06