我想将func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) {
if tabBarController.selectedIndex == 2{
tabBarController.selectedIndex = 0
let alert = UIAlertController(title: "Do something", message: "With this", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "A thing", style: .default) { action in
})
self.present(alert, animated: true, completion: {
})
}
}
转换为"foo.bar.baz"
。我的输入始终只是ASCII。我试过了:
"FooBarBaz"
但这感觉效率低下。
答案 0 :(得分:4)
您的解决方案是一个良好的开端。您可以在没有堆分配的情况下使其工作在" functional"样式;我更喜欢将复杂的逻辑放入普通的for
循环中。
此外,我不想假设输入是ASCII而不实际检查 - 这应该适用于任何字符串。
您可能还可以在代码中使用String::with_capacity
以避免在标准情况下重新分配。
fn dotted_to_pascal_case(s: &str) -> String {
let mut result = String::with_capacity(s.len());
for part in s.split('.') {
let mut cs = part.chars();
if let Some(c) = cs.next() {
result.extend(c.to_uppercase());
}
result.push_str(cs.as_str());
}
result
}
fn main() {
println!("{}", dotted_to_pascal_case("foo.bar.baz"));
}
答案 1 :(得分:3)
Stefan的回答是正确的,但我决定摆脱第一个If TargetTable.DataBodyRange.Height Then TargetTable.DataBodyRange.Copy OutputPasteRange
分配,并且完全正常运行,没有循环:
String