Как найти пробел, используя подстроку для отображения инициалов

Часть программы, которую я пытаюсь написать, должна принимать данные пользователей, то есть их имена, и выводить в списке их инициалы. У меня есть до сих пор:

Dim initials As String
Dim indexspace As Integer
initials = name.Substring(0, 1)
indexspace = name.IndexOf(" ")
lstInvoice.Items.Add(String.Format(strFormat, "Invoice ID", initials & space))

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

Большое спасибо за вашу помощь в этом вопросе, это очень ценится


person Tycholiz    schedule 27.01.2012    source источник
comment
Просто из интереса, какие инициалы у A.A.Milne или E.E.(Doc) Smith, с учетом пунктуации и отсутствия пробелов :-)   -  person paxdiablo    schedule 28.01.2012


Ответы (2)


В: Как мне найти пробел ("") в строке с помощью VB.Net?

О: String.IndexOf (" ");

Q: Как мне найти последующие пробелы в строке?

A: Извлеките подстроку всего справа от первого найденного пробела.

Затем выполните ".IndexOf (" ")" этой подстроки.

Пока вы не дойдете до конца строки или пока вам не надоест :)

person paulsm4    schedule 27.01.2012
comment
Это не так, просто слишком сложно по сравнению с версией, использующей Split. Хотя я бы не стал минусовать. - person Meta-Knight; 28.01.2012
comment
Кажется, я не могу использовать .indexof() без ошибки. Он работает с любым другим символом, таким как - или ; но с пробелом код не работает. - person Cheddar; 25.01.2021

Я прошу прощения за то, что не написал это на VB, но я больше знаком с C#. Нет причин искать индекс пробела. Просто разделите строку на пробел, а затем извлеките первую букву каждого из результатов в массиве. Для простоты я сделал предположение, что в строке всего два слова, но вы можете пройтись по массиву результатов, чтобы вывести все инициалы, если они включают отчество:

string name = "Test User";
string[] nameParts = name.Split(' ');
string initials = nameParts[0].Substring(0, 1) + nameParts[1].Substring(0, 1);

Версия ВБ:

 Dim name As String = "Test User"
 Dim nameParts As String() = name.Split(" ")
 Dim initials As String = nameParts(0).Substring(0, 1) & nameParts(1).Substring(0, 1)

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

person spinon    schedule 27.01.2012
comment
Я ценю спинон ответа, но я все еще новичок в программировании, поэтому я не могу читать С#. - person Tycholiz; 28.01.2012
comment
Итак, я говорю, что вместо использования индекса используйте функцию Split для разделения строки в пространстве. Затем потяните первую букву каждого из результатов, чтобы получить свои инициалы. Позвольте мне посмотреть, смогу ли я быстро набросать что-нибудь в VB для вас. - person spinon; 28.01.2012
comment
Большое спасибо за ваш ответ, это сработало отлично. ваше здоровье - person Tycholiz; 29.01.2012