Mam następujący prosty kod napisany w Swift 3:
let str = "Hello, playground"
let index = str.index(of: ",")!
let newStr = str.substring(to: index)
Z Xcode 9 beta 5 otrzymuję następujące ostrzeżenie:
„
substring(to:)
” jest przestarzałe: użyjString
indeksu krojenia z operatorem „częściowy zakres od”.
Jak można zastosować ten indeks krojenia z częściowym zakresem w Swift 4?
Odpowiedzi:
Powinieneś pozostawić jedną stronę pustą , stąd nazwa „zakres częściowy”.
To samo oznacza częściowy zasięg od operatorów, po prostu zostaw drugą stronę pustą:
Należy pamiętać, że operatorzy zakresu zwracają a
Substring
. Jeśli chcesz przekonwertować go na ciąg, użyjString
funkcji inicjalizacji:Możesz przeczytać więcej o nowych podciągach tutaj .
źródło
str[..<index]
zwraca aSubstring
. Jeśli chcesznewStr
byćString
, musisz napisać:let newStr = "\(str[..<index])"
Substring
jest prawdopodobnie nieco mylące, ponieważ to, czego naprawdę chce osiągnąć jestString
inicjalizacji:let newStr = String(str[..<index])
.Cannot subscript a value of type 'String' with an index of type 'PartialRangeUpTo<Int>'
. Jakie rodzaje wartości należy tam zastosować?str[..<str.index(str.startIndex, offsetBy: 8)]
czegoś takiego. Należy pamiętać, żestr.index
jest to działanie w czasie liniowym w funkcjioffsetBy
.str.prefix(8)
Konwertuj podciąg (Swift 3) na przecinanie łańcuchów (Swift 4)
Przykłady w Swift 3, 4:
źródło
Swift 5, 4
Stosowanie
Kod
źródło
Krótszy w Swift 4/5:
źródło
Konwersję kodu na Swift 4 można również wykonać w następujący sposób:
Możesz użyć poniższego kodu, aby uzyskać nowy ciąg:
źródło
substring (z: indeks) Przekształcony na [indeks ...]
Sprawdź próbkę
źródło
Swift5
(Metoda substringowa Javy):
Stosowanie:
źródło
from
abyto-1
np"Hello".substring(1,4)
zwrotów „ell”). Z małą modyfikacją (startIndex..<endIndex
) jest to najlepsze rozwiązanie, jakie do tej pory znalazłem, robi to dokładnie za pomocą zaledwie kilku linii kodu.Niektóre przydatne rozszerzenia:
źródło
Przykład
uppercasedFirstCharacter
właściwości wygody w Swift3 i Swift4.Właściwość
uppercasedFirstCharacterNew
pokazuje, jak korzystać z indeksu dolnego odcinania łańcucha w Swift4.źródło
Możesz utworzyć własną metodę subString, używając rozszerzenia do klasy String, jak poniżej:
źródło
Tworzenie SubString (przedrostek i przyrostek) z String przy użyciu Swift 4:
Wynik
Jeśli chcesz wygenerować podciąg między 2 indeksami, użyj:
źródło
Napisałem rozszerzenie ciągu w celu zastąpienia ciągu „String: subString:”
PS: Opcjonalni są zmuszeni do rozpakowania. W razie potrzeby dodaj kontrolę bezpieczeństwa typu.
źródło
Podczas programowania często mam ciągi znaków z prostym A-Za-z i 0-9. Nie ma potrzeby wykonywania trudnych akcji indeksu. To rozszerzenie jest oparte na zwykłych starych funkcjach lewy / środkowy / prawy.
źródło
za pomocą tej metody można uzyskać określony zakres ciągów. musisz przekazać indeks początkowy, a po tej całkowitej liczbie znaków, którą chcesz.
źródło
To jest moje rozwiązanie, bez ostrzeżenia, bez błędów, ale idealne
źródło
encodedOffset
jest uważane za szkodliwe i będzie przestarzałe .Mam nadzieję, że to pomoże trochę więcej:
Jeśli chcesz podciągu po określonym indeksie.
Jeśli chcesz podciąg po usunięciu łańcucha na końcu.
możesz także tworzyć indeksy z następującym kodem: -
źródło
Mam nadzieję, że byłoby to pomocne.
źródło
Możesz spróbować w ten sposób i uzyskasz odpowiednie wyniki.
źródło