2013-05-07 3 views
1

Я пытаюсь сделать разделитель аббревиатуры. Идея заключалась в том, что если меня кормят струной «Соединенные Штаты Америки», я вернусь к массиву из трех строк: «Объединенные», «Штаты», «Америка».Разделить на "", за исключением случаев, когда некоторая коллекция слов соответствует

Я будет отображать их уложены вертикально с первыми буквами полужирный, как например:

U nited

S Tates из

Merica

Что такое хороший способ сделать это? Я предполагаю, что он включает в себя какой-то раскол, а массив строк, содержащий общие слова, чтобы оставить его, например «из, a, if, then» и т. Д.

+0

Кажется, что вы хотите сделать регулярное выражение, чтобы выполнить начальное разделение, а затем обработать его оттуда. – Gjeltema

+0

@Gjeltema это, вероятно, правда, просто не знаю, как использовать Regex со строковым массивом, который является списком исключений. – Wesley

+0

В качестве альтернативы вы просто просматриваете и обрабатываете вручную. Сделайте разделение на "", а затем, когда вы перебираете список, выполните «просмотр» в следующем индексе, чтобы узнать, содержится ли это значение в вашем списке «исключения». Если это так, объедините два значения вместе и двигайтесь дальше. Больше кода, но, вероятно, более читабельны, чем регулярное выражение для этого. Я могу бросить какой-нибудь образец кода-заглушки, если это не имеет смысла. – Gjeltema

ответ

4

Использование таких регулярных выражений для этого:

Regex.Split(str, " (?!of|a|if)"); 

Живая демонстрация: http://ideone.com/KdQnfZ

Как сообщество предлагает в комментариях - вы можете разделить на пробел, затем слово начиналось с заглавной буквы как

Regex.Split(str, " (?=[A-Z])") 
+0

Выглядит потрясающе. Я могу сохранить отдельный список строк для легкого редактирования и построить выражение с помощью string.format или некоторой такой функции. – Wesley

1

Если вы можете использовать регулярное выражение, то выражение, подобное ([a-zA-Z]+ ?(of|in|and)?), будет работайте до тех пор, пока внутренняя группа (внутри и одна) заполняется всеми вашими словами исключения.

Смежные вопросы