给定字符串"ThisStringHasNoSpacesButItDoesHaveCapitals",在大写字母之前添加空格的最佳方法是什么.所以结束字符串将是"这个字符串没有空格,但它有资本"
以下是我使用RegEx的尝试
System.Text.RegularExpressions.Regex.Replace(value, "[A-Z]", " $0")
Run Code Online (Sandbox Code Playgroud) 非常基本,我只是好奇其他人如何实现这个算法,并希望看看是否有任何聪明的技巧来优化算法......我只需要为我正在研究的项目实现这个.
鉴于CamelCase中有一个字符串,你会如何"区分"它呢?
例如,给予FooBarGork我想要Foo Bar Gork.
这是我在C#中的算法:
static void Main(string[] args)
{
Console.WriteLine(UnCamelCase("FooBarGork"));
}
public static string UnCamelCase(string str)
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < str.Length; i++)
{
if (char.IsUpper(str, i) && i > 0) sb.Append(" ");
sb.Append(str[i]);
}
return sb.ToString();
}
由于你必须访问每个角色一次,我相信最好的情况是O(n).你会如何实现这个?
我试图整理一个解决方案: 在驼峰式令牌上的单词之间插入空格
基本上,他想把'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.
我究竟做错了什么?