Vb.net 带hypens的Propercase函数

Vb.net 带hypens的Propercase函数,vb.net,casing,Vb.net,Casing,我的.Net代码中有一个ProperCase函数,如下所示 Public Function ProperCase(ByVal strValue As String) As String Dim outString As String = "" Dim badWords As String = "and, at, do, de, du, USA, UK" Dim splitter(1) As Char splitter(0) = " " Dim splitS

我的.Net代码中有一个
ProperCase
函数,如下所示

Public Function ProperCase(ByVal strValue As String) As String
    Dim outString As String = ""
    Dim badWords As String = "and, at, do, de, du, USA, UK"
    Dim splitter(1) As Char
    splitter(0) = " "
    Dim splitString As String() = strValue.Split(splitter)
    For Each s As String In splitString
        If badWords.Contains(s) Then
            outString = outString & s & " "
        Else
            outString = outString & StrConv(s, VbStrConv.ProperCase) & " "
        End If
    Next
    Return Trim(outString)
End Function
我需要对双筒名称进行适当的命名,比如
Taylor-Smith
,但它的结果是
Taylor-Smith
,因为拆分器是一个空格,所以我对代码进行了这样的修改

Public Function ProperCase(ByVal strValue As String) As String
    Dim outString As String = ""
    Dim badWords As String = "and, at, do, de, du, USA, UK"
    Dim splitter(2) As Char
    splitter(0) = " "
    splitter(1) = "-"
    Dim splitString As String() = strValue.Split(splitter)
    For Each s As String In splitString
        If badWords.Contains(s) Then
            outString = outString & s
        Else
            outString = outString & StrConv(s, VbStrConv.ProperCase)
        End If
    Next
    Return Trim(outString)
End Function
所以我在函数中添加了一个额外的拆分器,但是现在它没有返回带有连字符的值。我删除了突出部分末尾的
&“
,但我不确定可以用什么替换它

我尝试添加
&拆分器
,但即使拆分器是空格,它也总是返回连字符

目前我用修改过的代码得到了这个

TomHart先生
JamieTaylorSmith先生

在代码的第一个版本中,我得到了这个

tomhart先生
杰米·泰勒·史密斯先生

我的预期产出是这样的

tomhart先生
杰米·泰勒·史密斯先生


有什么想法吗?

我根本不会改变拆分方法来捕捉连字符。相反,我会看着突出的部分。由更改前的第一个方法生成。可能在循环中的If中

这是一个非常快速的想法,以它为基础。。。不一定是最干净的版本,但应该给你一个想法:

    Dim outstring As String = "Michael James-smith"
    Dim indexOfCharToCheck As Integer = outstring.LastIndexOf("-"c) + 1
    Dim finalString As String = outstring.Substring(0, indexOfCharToCheck) & UCase(outstring(indexOfCharToCheck).ToString) & outstring.Substring(indexOfCharToCheck + 1)
    MsgBox(finalString)

样本输入、输出和预期输出将有所帮助。我看不出你有什么问题。@Oded我已经用预期的输出更新了-谢谢你我所追求的