Разбить строку по слову, используя один или несколько разделителей? - PullRequest
5 голосов
/ 12 мая 2011

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

"battlestar.galactica-season 1"

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

battlestar galactica season 1

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

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

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

            return fileTitle;

Полагаю, я мог бы также просто заменить разделители пробелами "" ... Я выберу ответ, как только таймер выключится!

Ответы [ 7 ]

7 голосов
/ 12 мая 2011

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

string s = "battlestar.galactica-season 1";
string[] words = s.split('.', '-');
2 голосов
/ 12 мая 2011

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

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

Массив char представляет собой список разделителей, на которые можно разделить.

2 голосов
/ 12 мая 2011

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

public string[] Split(
    params char[] separator
)
1 голос
/ 12 мая 2011
"battlestar.galactica-season 1".Split(new string[] { ".", "-" }, StringSplitOptions.RemoveEmptyEntries);
0 голосов
/ 26 июня 2013

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

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

0 голосов
/ 12 мая 2011

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

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

string title = "battlestar.galactica-season 1".Replace('.', ' ').Replace('-', ' ');
0 голосов
/ 12 мая 2011

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

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]);
    }
...