Отдельная фамилия, имя в строке разделяется запятой - PullRequest
2 голосов
/ 10 марта 2020

У меня есть ASP. NET Консольное приложение Core 3.1 , которое читает ofa c csv-файл, который "|" delimitted. В таблице базы данных есть поля FirstName и LastName , которые будут содержать имя и фамилию этих лиц. Проблема в том, что файл ofa c имеет полное имя в одной строке, например, «фамилия, имя». Я могу правильно прочитать файл, но я просто хочу сохранить фамилию и имя в отдельных свойствах, чтобы я мог обновить их в нашей базе данных как таковой.

Примечание: Многие из этих имен имеют два слова для своих фамилий и два слова для имени , а некоторые нет.

Другое примечание: Вы можете найти ofa c файл из https://www.treasury.gov/ofac/downloads/sdn.pip, нажав эту ссылку , чтобы лучше понять формат файла, который я анализирую.

Примеры имен из ofa c file:

"CRUZ, Juan M. de la"

"ESCOBAR БУИТРА GO, Уолтер "

" ГАЛИНДО, Гилмер Антонио "

" ГОМЕС БЕРРИО, Олмес де Хесус "

Что я пытаюсь совершить sh:

Я хочу разделить эту строку, чтобы иметь перед запятой для хранения в поле LastName , и все * 1 059 * после запятая для хранения в FirstName поле.

Что я пробовал:

Я получаю это Значение "CRUZ, Хуан М. де ла" при чтении полного имени как такового:

FullName = fields[1],

Однако, когда я пытаюсь сделать разделение на запятую для имени, которое я получаю этот результат System.String [] как таковой:

LastName = fields[1].Split(',').ToString(),

Может ли кто-нибудь помочь мне отделить любое слово (слова) до the ',' и назначьте его в поле LastName , и каждому слову (словам) после запятую присваивается моя Имя поле независимо от того, сколько имен они имеют в своем имени или фамилии .

Ответы [ 3 ]

3 голосов
/ 10 марта 2020

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

var nameParts = fields[1].Split(',');
var lastName = nameParts[0];
var firstName = nameParts.Length > 1 ? nameParts[1] : string.Empty;

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

var firstName = nameParts.Length > 1 ? string.Join(" ", nameParts.Skip(1)) : string.Empty;
1 голос
/ 10 марта 2020

Я не уверен, правильно ли я понял, но это довольно тривиально, как

string fullname = "CRUZ, Juan M. de la" ; // == fields[1]
string lastname = fullname.Split(',')[0];
string firstname = fullname.Split(',')[1];
1 голос
/ 10 марта 2020

Другой способ

  static string ReverseName(string name)
    {
        return string.Join(",", name.Split(",").Reverse()).ToString();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...