Правильный регистр букв

У меня есть проблема здесь в моей функции кожуха. Я использовал замену, чтобы изменить все соединение на более низкое, но все равно у меня есть ошибка>

Private Function UpCsing(ByVal sValue As String) As String
    Dim toConvert As String() = sValue.Split(" ")
    Dim lst As New List(Of String)

    For i As Integer = 0 To toConvert.Length - 1
        Dim converted As String = ""
        If toConvert(i).Contains("^") Then
            converted = toConvert(i).ToUpper.Replace("^", "")
        Else
            converted = StrConv(toConvert(i), VbStrConv.ProperCase).Replace("^", "")
        End If
        lst.Add(converted)

    Next
    Dim ret As String = ""
    For i As Integer = 0 To lst.Count - 1
        If i = 0 Then
            ret = lst(0)
        Else
            ret += " " + lst(i)
        End If
    Next
    Return ret.Replace(" For ", " for ").Replace(" In ", " in ").Replace(" Of ", " of ").Replace(" And ", " and ").Replace(" And/Or ", " and/or ").Replace(" By ", " by ") _
.Replace(" By ", " by").Replace(" 2Nd ", " 2nd ").Replace(" 3Rd ", " 3rd ").Replace(" At ", " at ").Replace("And/Or ", "and/or ").Replace("1St", "1st").Replace("2Nd", "2nd").Replace("3Rd", "3rd") _
.Replace("At ", "at ").Replace(" At", " at").Replace(" Of", " of").Replace(" & ", " and ").Replace("Poc", "POC").Replace(" As ", " as ") _
.Replace("C/O", "c/o").Replace("$ ", "$").Replace(" And/Or ", " and/or ")


End Function

Пример ошибки: "For" должен быть "for", но слово "Forward" должно быть "Forward", по моим выводам изменить его на "forward"

Пример "Для основного события и для нас, чтобы переслать" вывод должен быть "Для основного события и для нас, чтобы переслать"

1 ответ

Я пытался с этим кодом:

MessageBox.Show(UpCsing("for kelvzy sake I am paying^ this forward... forward^ for-ward..."))

И я получаю правильный результат:



Ради Кельвзи, я оплачиваю это вперед... ВПЕРЕД ВПЕРЕД...


Хорошо


Редактировать:

Пример "Для основного события и для нас, чтобы переслать" вывод должен быть "Для основного события и для нас, чтобы переслать"

Ваш код выводит Forward с большой буквы F, что именно то, что вы ожидаете.

Изменить 2:

Причина в том, что все слова без префикса / дополнения с помощью ^ преобразуются в ProperCase с этой строкой кода:

converted = StrConv(toConvert(i), VbStrConv.ProperCase).Replace("^", "")

Подсказка: нет необходимости заменять ^ на "", потому что слова, преобразованные в ProperCase, не добавляются с помощью ^.

Другие вопросы по тегам