如何获取字符串的第n个字符?我尝试了托架([])访问器没有运气.
var string = "Hello, world!"
var firstChar = string[0] // Throws error
Run Code Online (Sandbox Code Playgroud)
错误:'subscript'不可用:不能使用Int下标String,请参阅文档注释以供讨论
在Objective-c中,我们使用NSRange创建范围
NSRange range;
Run Code Online (Sandbox Code Playgroud)
那么如何在Swift中创建范围呢?
我一直在使用Swift 3更新我的一些旧代码和答案,但是当我使用Swift Strings和Indexing时,理解事情是一件很痛苦的事情.
具体来说,我尝试以下方法:
let str = "Hello, playground"
let prefixRange = str.startIndex..<str.startIndex.advancedBy(5) // error
Run Code Online (Sandbox Code Playgroud)
第二行给我以下错误
'advancedBy'不可用:要将索引推进n步,请在生成索引的CharacterView实例上调用'index(_:offsetBy :)'.
我看到它String有以下方法.
str.index(after: String.Index)
str.index(before: String.Index)
str.index(String.Index, offsetBy: String.IndexDistance)
str.index(String.Index, offsetBy: String.IndexDistance, limitedBy: String.Index)
Run Code Online (Sandbox Code Playgroud)
起初这些让我很困惑所以我开始玩它们直到我理解它们.我在下面添加一个答案来说明它们是如何使用的.
我习惯在JavaScript中这样做:
var domains = "abcde".substring(0, "abcde".indexOf("cd")) // Returns "ab"
Run Code Online (Sandbox Code Playgroud)
Swift没有这个功能,如何做类似的事情?
在斯威夫特4,当我尝试采取我得到这个错误Substring上String使用标语法.
'subscript'不可用:不能使用CountableClosedRange下标String,请参阅文档注释以供讨论
例如:
let myString: String = "foobar"
let mySubstring: Substring = myString[1..<3]
Run Code Online (Sandbox Code Playgroud)
两个问题:
当我尝试使用最新版本的Swift 设置label1为第一个字母时,我在最后一行收到错误string.如何解决这个问题?
let preferences = UserDefaults.standard
let name1 = "" + preferences.string(forKey: "name")!
let name2 = name1
label1.text = name2.substring(from: 0)
Run Code Online (Sandbox Code Playgroud) 就像问题所说,如果我有:
XQQ230IJFEKJLDSAIOUOIDSAUIFOPDSFE28
Run Code Online (Sandbox Code Playgroud)
如何每隔 8 个字符分割该字符串以获得:
XQQ230IJ FEKJLDSA IOUOIDSA UIFOPDSA
Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,我从网络服务接收一些传入数据。在该数据中,也可能会接收到一些错误值,例如换行符。我想在响应字符串中查找它是否包含换行符。
在 Swift 3 之前我可以这样做
string.rangeOfString("\n")) == nil)
Run Code Online (Sandbox Code Playgroud)
但在Swift 3中这个方法不再可用。但是,substring可以使用在 的帮助下执行的方法Range。
我想检测我的字符串是否包含"\n"如何在Swift 3中使用此方法来完成此操作。
我知道我们可以使用下标来剪切Swift 4中的一部分字符串.
let s = "aString"
let subS = s[..<s.endIndex]
Run Code Online (Sandbox Code Playgroud)
但问题是,如何切割s到像SubString一样aStr.
我的意思是,我想做的就像是s[..<(s.endIndex-3)].
但这不对.
那么,如何在Swift 4中做到这一点.
我有字符串,由一个预定义的字符串+随机字母组成,如" https://www.facebook.com/ "和"userId".
我有3个预定义的社交主机字符串:
let vkPredefinedHost = "https://vk.com/"
let fbPredefinedHost = "https://www.facebook.com/"
let instPredefinedHost = "https://www.instagram.com/"
Run Code Online (Sandbox Code Playgroud)
我想要的是,提取社交ID,这是一个字符串后面跟着那个字符串(我不确切知道我得到了哪一个).
所以我的问题是:
1)如何检查字符串是否包含我预先定义的字符串之一
2)如何提取字符串后跟此字符串
例如,我得到" https://www.instagram.com/myUserId12345 ",我想得到myUserId12345