Класс быстрой строки не предоставляет возможности получить символ по определенному индексу из-за его собственной поддержки символов UTF. Переменная длина символа UTF в памяти делает невозможным переход непосредственно к символу. Это означает, что вы должны вручную зацикливать строку каждый раз.
Вы можете расширить String для предоставления метода, который будет циклически проходить по символам до нужного вам индекса
extension String {
func characterAtIndex(index: Int) -> Character? {
var cur = 0
for char in self {
if cur == index {
return char
}
cur++
}
return nil
}
}
myString.characterAtIndex(0)!
Является ли Descendants ()
, что вам нужно?
Он получит всех потомков - чтобы получить только листья, вы можете использовать LINQ to Objects с Where
пункт:
element.Descendants()
.Where(desc => !desc.Elements().Any());
(Обратите внимание, что это все еще только элементы, а не другие узлы, такие как текстовые узлы. Надеюсь, что все в порядке.)