swift对String有修饰方法吗?例如:
let result = " abc ".trim()
// result == "abc"
Run Code Online (Sandbox Code Playgroud) 现在是承认失败的时候了......
在Objective-C中,我可以使用类似的东西:
NSString* str = @"abcdefghi";
[str rangeOfString:@"c"].location; // 2
Run Code Online (Sandbox Code Playgroud)
在Swift中,我看到类似的东西:
var str = "abcdefghi"
str.rangeOfString("c").startIndex
Run Code Online (Sandbox Code Playgroud)
...但是这只是给了我一个String.Index,我可以使用它来下标回原始字符串,但不从中提取位置.
FWIW,String.Index有一个私人ivar _position,它具有正确的价值.我只是看不出它是如何曝光的.
我知道我可以轻松地将它添加到String中.我对这个新API中缺少的东西更感兴趣.
我想学习将字符串转换为另一个字符串的最佳/最简单的方法,但只有一个子集,从头开始并转到字符的最后一个索引.
例如,将"www.stackoverflow.com"转换为"www.stackoverflow".什么代码片段可以做到这一点,并且是最快速的?(我希望这不会带来争论,但我找不到关于如何处理Swift中的子串的好教训.
我正在尝试测试Swift字符串是否以某个值开始或结束.这些方法不存在:
var str = "Hello, playground"
str.startsWith("Hello") // error
str.endsWith("ground") // error
Run Code Online (Sandbox Code Playgroud)
我还想获得前缀和后缀字符串.我可以找到一个子串,正如这里和这里所回答的那样,但范围在Swift中是如此痛苦.
有更简单的方法吗?
(当我阅读文档时,我偶然发现了答案,因为我的搜索条款没有得到答案,所以我在这里添加了问答.)
我需要分隔一个字符串的最后4个字母.我怎么能分开呢?字符串的长度在变化.
例如:
var a = "StackOverFlow"
var last4 = a.lastFour //That's what I want to do
print(last4) //prints Flow
Run Code Online (Sandbox Code Playgroud) 我在这一行遇到编译器错误:
UIDevice.currentDevice().identifierForVendor.UUIDString.substringToIndex(8)
Run Code Online (Sandbox Code Playgroud)
类型'String.Index'不符合协议'IntegerLiteralConvertible'
我的意图是得到子串,但是如何?
使用Beta 3一切正常,现在我得到一个奇怪的错误,我不知道如何解决它.尝试了解类似问题的所有解决方案.
这是我的代码:
if !name.isEmpty {
var splitted: [String] = name.componentsSeparatedByString(" ")
for curPart in splitted {
if !curPart.isEmpty {
acronym += curPart.substringToIndex(1) //Error
}
}
if (acronym as NSString).length > 2 {
acronym = acronym.substringToIndex(2) //Error
}
}
Run Code Online (Sandbox Code Playgroud)
两条标记的线都给了我同样的错误:
类型'String.Index'不符合协议'IntegerLiteralConvertible'
有人能帮我吗?或者Beta 4被窃听?谢谢!
我正在尝试在Swift/Xcode6中使用UITextFieldDelegate,我正在努力使用我应该使用stringByReplacingCharactersInRange的方式.编译器错误是'无法将表达式的类型'String'转换为'$ T8'类型.
func textField(textField: UITextField!, shouldChangeCharactersInRange range: NSRange, replacementString string: String!) -> Bool
{
let s = textField.text.stringByReplacingCharactersInRange(range:range, withString:string)
if countElements(s) > 0 {
} else {
}
return true
}
Run Code Online (Sandbox Code Playgroud)
Xcode 6 Beta 5的更新:问题是theChangeCharactersInRange给出了一个NSRange对象,我们需要一个用于stringByReplacingCharactersInRange的Swift Range对象.这仍然可以被认为是一个错误,因为我不明白为什么我们仍然应该处理NS*对象?委托方法的String参数无论如何都是Swift类型.
所以
split("There are fourty-eight characters in this string", 20)
Run Code Online (Sandbox Code Playgroud)
应该回来
["There are fourty-eig", "ht characters in thi","s string"]
Run Code Online (Sandbox Code Playgroud)
如果我使currentIndex = string.startIndex,然后尝试进一步提前()它比string.endIndex,我得到"致命错误:不能增加endIndex"之前我检查我的currentIndex <string.endIndex所以下面的代码没有'工作
var string = "12345"
var currentIndex = string.startIndex
currentIndex = advance(currentIndex, 6)
if currentIndex > string.endIndex {currentIndex = string.endIndex}
Run Code Online (Sandbox Code Playgroud)