2015-05-03 12 views
10

Để loại bỏ một chuỗi con ở một phạm vi nhất định, sử dụng removeRange (_ :) phương pháp:Hiểu removeRange (_ :) tài liệu

1 let range = advance(welcome.endIndex, -6)..<welcome.endIndex 
2 welcome.removeRange(range) 
3 println(welcome) 
4 // prints "hello" 

Trích Từ: Apple Inc. “Ngôn ngữ lập trình Swift . ”IBooks. https://itun.es/ca/jEUH0.l

Chào bạn,

Tôi không hiểu đầy đủ về cú pháp và chức năng của dòng 1 trong đoạn code trên.

Xin giải thích sử dụng chuỗi này:

let welcome = "hello there" 

Đây là những gì tôi đã làm việc ra: "Để thay đổi các chỉ số bắt đầu và kết thúc, sử dụng advance()"


Từ: https://stackoverflow.com/a/24045156/4839671

Một tài liệu tốt hơn về advance() được hoan nghênh. ví dụ: đó là lập luận

Sử dụng ..< để làm cho một phạm vi mà bỏ qua giá trị trên của nó

Trích From: “Ngôn ngữ lập trình Swift” Apple Inc. iBooks. https://itun.es/ca/jEUH0.l

welcome.endIndex sẽ là 11

+0

Khó khăn là gì? Các chuỗi có startIndex và endIndex. Bạn phải tăng/giảm chúng thông qua trước. Phạm vi là một cái gì đó như '' ... '' hoặc 'chỉ mục' .. <''. –

+0

Tôi không biết rằng các biến (hoặc hằng số) có thể giữ phạm vi. –

Trả lời

14

Swift 2

Chúng ta sẽ sử dụng var từ removeRange nhu cầu để hoạt động trên một chuỗi có thể thay đổi.

var welcome = "hello there" 

dòng này:

let range = welcome.endIndex.advancedBy(-6)..<welcome.endIndex 

nghĩa là chúng ta bắt đầu từ ngày kết thúc của chuỗi (welcome.endIndex) và di chuyển trở lại bởi 6 ký tự (trước bởi một số âm = di chuyển trở lại), sau đó yêu cầu phạm vi (..<) giữa vị trí của chúng tôi và kết thúc của chuỗi (welcome.endIndex).

Tạo phạm vi 5..<11, bao gồm phần "ở đó" của chuỗi.

Nếu bạn loại bỏ phạm vi này của các nhân vật từ chuỗi với:

welcome.removeRange(range) 

sau đó chuỗi của bạn sẽ là phần còn lại:

print(welcome) // prints "hello" 

Bạn có thể mang nó theo cách khác (từ chỉ số bắt đầu của chuỗi) cho cùng một kết quả:

welcome = "hello there" 
let otherRange = welcome.startIndex.advancedBy(5)..<welcome.endIndex 
welcome.removeRange(otherRange) 
print(welcome) // prints "hello" 

Ở đây chúng ta bắt đầu từ đầu chuỗi (welcome.startIndex), sau đó chúng ta tiến 5 ký tự, sau đó chúng ta tạo một dãy (..<) từ đây đến cuối chuỗi (welcome.endIndex).

Lưu ý: chức năng advance có thể hoạt động tiến và lùi.

Swift 3

Cú pháp đã thay đổi nhưng các khái niệm đều giống nhau.

var welcome = "hello there" 
let range = welcome.index(welcome.endIndex, offsetBy: -6)..<welcome.endIndex 
welcome.removeSubrange(range) 
print(welcome) // prints "hello" 

welcome = "hello there" 
let otherRange = welcome.index(welcome.startIndex, offsetBy: 5)..<welcome.endIndex 
welcome.removeSubrange(otherRange) 
print(welcome) // prints "hello" 
Các vấn đề liên quan