如何获取字符串中的第一个字符?(Swift 3)



我想从一个以"<ONLINE>""<OFFLINE>"开头的字符串中获得一个子字符串(它应该成为我的子字符串(。当我尝试创建Range对象时,我可以通过使用startIndex轻松访问第一个字符,但如何获得子字符串的右括号索引,该索引将是完整字符串的第8个或第9个字符?

更新:

一个简单的例子:

let onlineString:String = "<ONLINE> Message with online tag!"
let substring:String = // Get the "<ONLINE> " part from my string?
let onlineStringWithoutTag:String = onlineString.replaceOccurances(of: substring, with: "")
// What I should get as the result: "Message with online tag!"

所以基本上,问题是:我该为substring做什么?

let name = "Ajay"
// Use following line to extract first chracter(In String format)
print(name.characters.first?.description ?? "");
// Output : "A"

如果您不想使用范围

let onlineString:String = "<ONLINE> Message with online tag!"
let substring:String = onlineString.components(separatedBy: " ")[0]
print(substring) // <ONLINE>

正确的方法是使用以下索引:

let string = "123 456"
let firstCharIndex = string.index(string.startIndex, offsetBy: 1)
let firstChar = string.substring(to: firstCharIndex)
print(firstChar)

此代码为您提供字符串的第一个字符。Swift提供了这个返回字符的方法?在使用之前你必须把它包起来

let str = "FirstCharacter"
print(str.first!)

类似于OOPer's:

let string = "<ONLINE>"
let closingTag = CharacterSet(charactersIn: ">")
if let closingTagIndex = string.rangeOfCharacter(from: closingTag) {
    let mySubstring = string.substring(with: string.startIndex..<closingTagIndex.upperBound)
}

或者使用正则表达式:

let string = "<ONLINE>jhkjhkh>"
if let range = string.range(of: "<[A-Z]+>", options: .regularExpression) {
    let mySubstring = string.substring(with: range)
}

此代码对您的目的有所帮助:

let myString = "<ONLINE>abc"
if let rangeOfClosingAngleBracket = myString.range(of: ">") {
    let substring = myString.substring(to: rangeOfClosingAngleBracket.upperBound)
    print(substring) //-><ONLINE>
}

Swift 4

let firstCharIndex = oneGivenName.index(oneGivenName.startIndex, offsetBy: 1)
let firstChar = String(oneGivenName[..<firstCharIndex])
let character = MyString.first

这是在swift中从字符串中获取第一个字符的一种简单方法。

在swift 5 中

let someString = "Stackoverflow"
let firstChar = someString.first?.description ?? ""
print(firstChar)

Swift 5扩展

extension String {
    var firstCharactor: String? {
        guard self.count > 0 else {
            return nil
        }
        return String(self.prefix(1))
    }
}

最新更新