Вход/Регистрация
Программирование мобильных устройств на платформе .NET Compact Framework
вернуться

Салмре Иво

Шрифт:

m_inputIsFullValidEntry = False

End Sub

'---------------------------------------------------------------------

'Форматировать поступающий текст с целью установления его соответствия

'нужному формату:

'

' Формат номера карточки социального страхования: ###-##-####

' символы: 01234567890

'

' [in] inString : Текст, который мы хотим форматировать

' [in/out] selectionStart: Текущая точка вставки в тексте;

' она будет смещаться в связи с удалением

' и добавлением нами символов

'----------------------------------------------------------------------

Private Function formatText_NNN_NN_NNNN(ByVal inString As _

String, ByRef selectionStart As Integer) As String

Const firstDashIndex As Integer = 3

Const secondDashIndex As Integer = 6

'Удалить старые данные и поместить входную строку

'в объект StringBuilder, чтобы мы могли с ней работать.

m_sb.Length = 0

m_sb.Append(inString)

'------------------------------------------------------------

'Просмотреть каждый символ в строке, пока не будет

'достигнута максимальная длина нашего форматированного текста

'------------------------------------------------------------

Dim currentCharIndex As Integer

currentCharIndex = 0

While ((currentCharIndex < m_sb.Length) AndAlso _

(currentCharIndex < SSNumberLength))

Dim currentChar As Char

currentChar = m_sb(currentCharIndex)

If ((currentCharIndex = firstDashIndex) OrElse _

(currentCharIndex = secondDashIndex)) Then

'-------------------------------

'The character needs to be a "-"

'-------------------------------

If (currentChar <> "-"c) Then 'Вставить дефис

m_sb.Insert(currentCharIndex, "-")

'Если мы добавили символ перед точкой вставки,

'она должна быть смещена вперед

If (currentCharIndex <= selectionStart) Then

selectionStart = selectionStart + 1

End If

End If

'Этот символ годится, перейти к следующему символу

currentCharIndex = currentCharIndex + 1

Else

'-------------------------

'Символ должен быть цифрой

'-------------------------

If (System.Char.IsDigit(currentChar) = False) Then

'Удалить символ

m_sb.Remove(currentCharIndex, 1)

'Если мы добавили символ перед точкой вставки,

'она должна быть смещена назад

If (currentCharIndex < selectionStart) Then

selectionStart = selectionStart - 1

End If

'He увеличивать значение счетчика символов, ибо мы должны

'просмотреть символ, занявший место того символа,

'который мы удалили

Else

'Символ является цифрой, все нормально.

currentCharIndex = currentCharIndex + 1

End If

End If

End While

'Если превышена длина строки, усечь ее

  • Читать дальше
  • 1
  • ...
  • 286
  • 287
  • 288
  • 289
  • 290
  • 291
  • 292
  • 293
  • 294
  • 295
  • 296
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: