2015-08-04 2 views
3

Я ищу регулярное выражение, которое будет использоваться в моем приложении Java, чтобы разделить полное имя на первое &.Regex to Split Полное имя

Полное имя всегда будет разделено символом «» (пробел как разделитель). какое-то имя может состоять из среднего имени, но их можно комбинировать с FirstName, я хочу только отделить Фамилию как отдельную группу.

For example : 
"This is My Fullname" 
LastName = Fullname 
FirstName = This is My 

Поэтому логика бытия, все, что после того, как последний пробельных рассматривается как LastName и все до того, как FirstName.

+0

Просто для записи, моя юридическая фамилия "Виллар Виллар" да, то же самое слово, дважды, разделенные пространство, и я живу в англоговорящей стране. Другая фамилия - «De Lorean», которая также имеет пространство. Вы можете просто использовать 'fullName.lastIndexOf()', как было предложено WillShackleford, но если бы я был вами, я бы дважды удостоверился, что у вас нет этой проблемы в ваших данных. – morgano

+0

Что насчет «Это мое имя?» – Jordan

ответ

4

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

String fullName = "This is My Fullname"; 
int index = fullName.lastIndexOf(' '); 
String lastName = fullName.substring(index+1); 
String firstName = fullName.substring(0, index); 
+0

Привет, эта работа идеально подходит для всех моих имен, в настоящее время очень мало. Но формат должен быть очень похож на существующие записи. Спасибо за решение –

0

Возможно, вам понадобится подход «смотреть вперед», так как вы не знаете количества пробелов на вашем входе. Проблема связана с группами с неизвестным количеством элементов. . ([^]) ([^]) ([^]) ([^]) и ссылаясь на $ 3 и $ 4, будут работать в вашей строке с 4 элементами, но не с большим количеством элементов. И ([^]) * ([^]) не сможет ссылаться на группы.

Но в этом простом случае, я бы сказал, что проще всего использовать строку раскол и взять последние 2 пунктов:

String inputString = "This is My Fullname"; 
String[] splitText = inputString.split(" "); 
String firstName = splitText[splitText.length-2]; 
String lastName = splitText[splitText.length-1]; 
1

Вы не должны использовать регулярные выражения для этой цели. Просто разделите строку на Spaces и используйте последний элемент массива в качестве LastName.

Пример

String[] parts = string.split(" "); 

часть [parts.length - 1] - будет LastName