Лучший способ изменить строку, чтобы переместить «A», «An», «The» в конец строки в c # - PullRequest
1 голос
/ 12 июля 2011

У меня есть большой список фильмов (1000 в настоящее время, но может легко достичь 5000).Я хочу установить «правильные» названия для фильмов, что означает перемещение «A», «An», «The» в конец названия (то есть «Хроники Нарнии» становятся «Хрониками Нарнии»).

Я могу сделать некоторые операторы if с подстрокой, но я ищу наиболее эффективный / быстрый способ сделать это.

Предложения?

Ответы [ 3 ]

3 голосов
/ 12 июля 2011
Regex.Replace(s, "(?i)^(The|A|An) (.*)$","$2, $1");

, вероятно, должен это сделать.Регулярное выражение совпадает с The, A и An в начале и перемещает его в конец.

Быстрый тест PowerShell:

PS Home:\> 'Conan the Barbarian','The Lord of the Rings','The Matrix','There Will Be Blood'-creplace'(?i)^(The|A|An) (.*)$','$2, $1'
Conan the Barbarian
Lord of the Rings, The
Matrix, The
There Will Be Blood
3 голосов
/ 12 июля 2011
string title = "The Chronicles of Narnia";
string newTitle = Regex.Replace(title, "^(the|a|an) (.*)$", "$2, $1", RegexOptions.IgnoreCase);

Console.WriteLine(newTitle);
0 голосов
/ 12 июля 2011

Я не думаю, что 1000 string это так много.Вы могли бы сделать.

string movieStr = "The Test Movie";
            string[] MovieStrArr = movieStr.Split(' ');
            string resultStr = string.Empty;
            string tempString = string.Empty;

            if (MovieStrArr[0] == "The" || MovieStrArr[0] == "A" || MovieStrArr[0] == "An")
            {
                tempString = MovieStrArr[0];
                MovieStrArr[0] = MovieStrArr[MovieStrArr.Length - 1];
                MovieStrArr[MovieStrArr.Length - 2] = MovieStrArr[MovieStrArr.Length - 2] + ",";
                MovieStrArr[MovieStrArr.Length - 1] = tempString;
                resultStr = string.Join(" ", MovieStrArr);
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...