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

#c# #.net #string #split #delimiter

#c# #.net #строка #разделить #разделитель

Вопрос:

Возможно, я только что дошел до того, что переосмыслил это, но мне интересно: есть ли способ назначить список специальных символов, которые все следует считать разделителями, а затем разделить строку, используя этот список? Пример:

 "battlestar.galactica-season 1"
  

должно быть возвращено как

 battlestar galactica season 1
  

я думаю о регулярном выражении, но в данный момент я немного взволнован, слишком долго смотрел на это.

РЕДАКТИРОВАТЬ: Спасибо, ребята, за подтверждение моих подозрений, что я слишком много думал об этом, lol: вот что у меня получилось:

 //remove the delimiter
            string[] tempString = fileTitle.Split(@"/.-<>".ToCharArray());
            fileTitle = "";
            foreach (string part in tempString)
            {
                fileTitle  = part   " ";
            }

            return fileTitle;
  

Я полагаю, я мог бы просто заменить разделители пробелами «»… я выберу ответ, как только истечет таймер!

Ответ №1:

Встроенный String.Split метод может использовать набор символов в качестве разделителей.

 string s = "battlestar.galactica-season 1";
string[] words = s.split('.', '-');
  

Ответ №2:

Стандартный метод split сделает это за вас. Требуется массив символов:

 public string[] Split(
    params char[] separator
)
  

Ответ №3:

Вы можете просто вызвать перегрузку split:

 myString.Split(new char[] { '.', '-', ' ' }, StringSplitOptions.RemoveEmptyEntries);
  

Массив char — это список разделителей для разделения.

Ответ №4:

 "battlestar.galactica-season 1".Split(new string[] { ".", "-" }, StringSplitOptions.RemoveEmptyEntries);
  

Ответ №5:

Это может быть неполным, но что-то вроде этого.

 string value = "battlestar.galactica-season 1"

char[] delimiters = new char[] { 'r', 'n', '.', '-' };
    string[] parts = value.Split(delimiters,
                     StringSplitOptions.RemoveEmptyEntries);
    for (int i = 0; i < parts.Length; i  )
    {
        Console.WriteLine(parts[i]);
    }
  

Ответ №6:

Вы пытаетесь разделить строку (создать несколько строк) или вы просто хотите заменить специальные символы пробелом, как может также предложить ваш пример (создать 1 измененную строку). Для первого варианта просто посмотрите другие ответы 🙂

Если вы хотите заменить, вы могли бы использовать

 string title = "battlestar.galactica-season 1".Replace('.', ' ').Replace('-', ' ');
  

Комментарии:

1. по какой-то причине каждая версия replace, которую я пробовал, не работает … застрял со словом array :/

2. Я немного изменил свой пример, чтобы отразить необходимость переназначения результата replace. Однако, если вы ищете массив в техническом смысле этого слова, мой пример может быть для вас малопригоден, и вам следует использовать любой из других ответов, опубликованных здесь.

Ответ №7:

Для получения дополнительной информации о разделении с помощью простых примеров вы можете увидеть следующий URL:

Это также включает разделение по словам (несколько символов). Объяснена функция разделения в C #