如何获取字符串中的第一个字符? (斯威夫特3)

时间:2016-10-19 21:41:24

标签: swift string substring

我想从字符串中获取一个子字符串,该字符串以"<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

10 个答案:

答案 0 :(得分:6)

let name = "Ajay"

// Use following line to extract first chracter(In String format)

print(name.characters.first?.description ?? "");

// Output : "A"

答案 1 :(得分:3)

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

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

答案 2 :(得分:2)

如果您不想使用范围

let onlineString:String = "<ONLINE> Message with online tag!"

let substring:String = onlineString.components(separatedBy: " ")[0]

print(substring) // <ONLINE>

答案 3 :(得分:1)

与OOPer的相似:

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)
}

答案 4 :(得分:0)

此代码可为您的目的提供一些帮助:

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

答案 5 :(得分:0)

快捷键4

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

答案 6 :(得分:0)

此代码为您提供字符串的第一个字符。 Swift提供了这种返回字符的方法?您必须在使用前将其包装

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

答案 7 :(得分:0)

在 swift 5

> DT[, .SD[order(b)], a]
    a   b
 1: C 129
 2: C 679
 3: C 836
 4: C 930
 5: A 270
 6: A 299
 7: A 471
 8: A 509
 9: D 187
10: D 307
11: D 597
12: D 978
13: B 277
14: B 494
15: B 874
16: B 950
17: E 330
18: E 591
19: E 775
20: E 841

> DT[, setorder(.SD, b), a]
    a   b
 1: C 129
 2: C 679
 3: C 836
 4: C 930
 5: A 270
 6: A 299
 7: A 471
 8: A 509
 9: D 187
10: D 307
11: D 597
12: D 978
13: B 277
14: B 494
15: B 874
16: B 950
17: E 330
18: E 591
19: E 775
20: E 841

答案 8 :(得分:0)

Swift 5 扩展

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

答案 9 :(得分:0)

let character = MyString.first

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