2013-12-16 4 views
-1

У меня есть строка, в которой я хочу получить определенную часть.Как получить определенную часть строки

строка всегда будет в формате:

FirstName LastName, (позиция)

Я хочу, чтобы иметь возможность получить только LastName часть строки (после первого пространства и перед запятая)

LastName часть строки всегда будет отличаться, но FirstName могут быть одинаковыми

как бы я идти об этом

+0

Я редактировал свой титул. Пожалуйста, смотрите: «Если вопросы включают« теги »в их названиях?] (Http://meta.stackexchange.com/questions/19190/), где консенсус« нет, они не должны ». –

+0

ok не беспокоится, вопрос уже был дан, хотя – NattyMan0007

ответ

2

Если строка всегда в формате Имя Фамилия, (постион), вы можете использовать String.Split разделить строку на 3-х элементов на основе пространства, а также метод String.Replace для удаления запятой от LastName:

string input = "John Doe, (Manager)"; 

string lastName = input.Split(' ')[1].Replace(",", ""); 

выше разбивает строку на «», возвращая массив строк (элемент 0 Джон, элемент 1 является Doe, и элемент 2 (менеджер)). Затем выбирается второй элемент ([1]), а затем String.Replace используется для удаления запятой.

Выход должен быть «Доу».

+0

Спасибо, Тим, который отлично работал. – NattyMan0007

+0

Добро пожаловать. Просто помните, что если строка не в правильном формате, у вас возникнут проблемы. Счастливое кодирование :) – Tim

0

Вы можете использовать для этого Substring

int spaceIndex = str.IndexOf(' '); 
string lastName = str.Substring(spaceIndex); 

, но это работает только, если все firstnames имеют такое же length.for лучший способ вы можете рассмотреть возможность использования Split метода:

string lastName = str.Split(' ')[1]; 
+0

Первый подход не удовлетворяет требованиям OP, так как это приведет к «LastName, (Position)». Второй подход ближе, но по-прежнему будет '' 'в конце. – Tim

0

Ну в принципе вы не можете сделать это безопасно. Вы можете использовать метод String.Split для разделения полного имени и положения на строковый массив с использованием запятой (,) в качестве разделителя, но когда дело доходит до разделения имени и фамилии, похоже, вы можете сделать это только с помощью пространства как разделитель, который в то же время поднимает несколько вопросов. Что произошло, если есть второе имя?

Примеры

string[] fullNameAndPosition = str.Split(','); 
string position = fullNameAndPosition[1]; 
string[] fullName = fullNameAndPosition.Split(' '); 
string fname = fullName[0]; 
string lname = fullName[1]; 
2

Simpler подход:

var test = "FirstName LastName, (Position)"; 
var t = test.Split(new[] { ' ', ',' })[1]; 
Смежные вопросы