2016-07-21 6 views
1

У меня есть такая строкаполучить подстроку строки в vb.net

ФАМИЛИЯ, ИМЯ ОТЧЕСТВО

Я хотел бы, чтобы положить в 3-х различных текстового

FirstName MiddleName LastName

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

у меня есть этот код для моего р кт:

Name = Me.dtgEmplist.CurrentRow.Cells(1).Value 

fname = Name.Substring(Name.IndexOf(" ")).Trim 
mname = fname.Substring(fname.IndexOf(" ")).Trim 
lname = Name.Substring(0, Name.IndexOf(",")).Trim 

я, кажется, чтобы получить LastName и middlenames правильно, но Firstname очень сложно, я только удастся получить этот вид продукции

FirstName MiddleName MiddleName LastName

мог кто-то помогает мне? Я так долго пробовал это.

EDIT: они взяты из документа datagridview. А вид DataGridView заполняется из хранимой процедуры

+0

Привет, пожалуйста, скажите, какой тип строки входит в Имя = Me.dtgEmplist.CurrentRow.Cells (1) .Value –

+0

@ChetanSanghani sir, строка с именем «Name» производит «Lastname, FirstName MiddleName», которое берется из столбца datagrid sir. – UserSeriously

ответ

0

Это должно быть легко если вы используете Split метод, как другие говорили:

Name = Me.dtgEmplist.CurrentRow.Cells(1).Value 

Dim FirstSplit as String() 
FirstSplit = Name.Split(",") 
fname = FirstSplit(0).Trim() 

Dim SecondSplit as String() = (FirstSplit(1).Trim()).Split() 

mname = SecondSplit(0).Trim 
lname = SecondSplit(1).Trim 

Прежде всего вы разделить на «» характер, а затем вы разделяете для пространства. Возможно, вы также должны проверить размер массива.

+0

Это сработало сэр! но почему-то есть средние имена, у которых есть пробелы i.e Смит, Джеймс Де Кастро и «Кастро» проигнорированы, я просто исправлю это сам, но спасибо за начало! – UserSeriously

+0

Это более сложная проблема. Как вы можете различать пространство между FistsName и MiddleName и пространство внутри имени? Вы должны использовать другой escape-символ. – CiccioRocca

+0

Я как-то использовал SecondSplit.length и запечатлел, сколько пробелов в названии, я просто надеюсь, что там нет первого имени с 2 пробелами, или это уйдет от – UserSeriously

0

может быть проще с String.split(): https://msdn.microsoft.com/en-us/library/tabh47cf(v=vs.110).aspx

вы можете сначала разбить всю строку на коме:

string[] splitted 
string[] splitted2 
splitted = Name.Split(New Char() {","c}) 

fName = splitted(0).Trim 
splitted2 = splitted(1).Split(New Char() {" "c} 

mname = splitted2(0).Trim() 
lname = splitted2(1).Trim() 
+0

Сэр, у вас есть что-то, что есть VB.net? – UserSeriously

+0

Это не похоже на Vb.net. Это гибрид. – CiccioRocca

+0

Извините за это, не используйте VB.NET в течение многих лет. Я не пытался создать этот код. –