LINQ中的字符替换?

Rob*_* P. 2 .net c# linq vb.net

我试图整理一个解决方案: 在驼峰式令牌上的单词之间插入空格

基本上,他想把'ThisIsATest'变成'This Is A Test'.我想,'哦,这很容易,我可以用LINQ做到这一点',但我很努力.

有人能帮我吗?

Dim s As String = String.Join("", From myChar As Char In myStr _
                                  Select If(Char.IsUpper(myChar), (" " & myChar).ToString, myChar.ToString))
Run Code Online (Sandbox Code Playgroud)

我开始走下去的道路,但是我无法将结果变成我可以使用的东西.我甚至添加了.ToString来尝试获取一个字符串数组,但我仍然收到错误.

无法将类型为'WhereSelectEnumerableIterator`2 [System.Char,System.String]'的对象强制转换为'System.String []'.

我相信这意味着我得到的是System.Char,System.String的集合,而不仅仅是我想要的System.String.

我究竟做错了什么?

Leo*_*ons 5

您可以使用RegEx并拆分大写字符.

Dim myString as string = "ThisIsATest"
Dim outStr As String = Regex.Replace(myString,"[A-Z]"," $0")
Run Code Online (Sandbox Code Playgroud)

区分大小写的替换将定位每个大写字符并在字符前插入一个空格.