it-roy-ru.com

Swift - Удалить "символ из строки

У меня есть строка, которая "Необязательно (" 5 ")". Мне нужно удалить «» вокруг 5. Я удалил «Необязательно», выполнив:

text2 = text2.stringByReplacingOccurrencesOfString("Optional(", withString: "", options: NSStringCompareOptions.LiteralSearch, range: nil)

У меня возникают трудности при удалении символов ", поскольку они обозначают конец строки в коде.

57
Calan Williams

Swift использует обратную косую черту, чтобы избежать двойных кавычек. Вот список экранированных специальных символов в Swift:

  • \0 (нулевой символ)
  • \\ (обратный слеш)
  • \t (горизонтальная вкладка)
  • \n (перевод строки)
  • \r (возврат каретки)
  • \" (двойная кавычка)
  • \' (одинарная кавычка)

Это должно работать:

text2 = text2.replacingOccurrences(of: "\\", with: "", options: NSString.CompareOptions.literal, range: nil)
131
dasblinkenlight

Свифт 3 и Свифт 4:

text2 = text2.textureName.replacingOccurrences(of: "\"", with: "", options: NSString.CompareOptions.literal, range:nil)

Последние документы, обновленные до Swift 3.0.1, имеют:

  • Нулевой символ (\0)
  • Обратная косая черта (\\)
  • Горизонтальная вкладка (\t)
  • Перевод строки (\n)
  • Возврат каретки (\r)
  • Двойная цитата (\")
  • Одиночная цитата (\')
  • Скаляр Unicode (\u{n}), где n от одной до восьми шестнадцатеричных цифр

Если вам нужна более подробная информация, вы можете обратиться к официальным документам здесь

44
Alessandro Ornano

Вот обновленный ответ Swift 3

  var editedText = myLabel.text?.replacingOccurrences(of: "\", with: "")
Null Character (\0)
Backslash (\\)
Horizontal Tab (\t)
Line Feed (\n)
Carriage Return (\r)
Double Quote (\")
Single Quote (\')
Unicode scalar (\u{n})
20
Chathuranga Silva

Чтобы удалить необязательный, вы должны сделать это только

println("\(text2!)")

потому что, если вы не используете "!" принимает необязательное значение text2

И чтобы удалить "" из 5, вы должны преобразовать его в NSInteger или NSNumber easy peasy. У него есть "", потому что это строка.

9
Norolim

В конце концов я получил это, чтобы работать на детской площадке, имея несколько символов, которые я пытаюсь удалить из строки:

var otherstring = "lat\" : 40.7127837,\n"
var new = otherstring.stringByTrimmingCharactersInSet(NSCharacterSet.init(charactersInString: "la t, \n \" ':"))
count(new) //result = 10
println(new) 
//yielding what I'm after just the numeric portion 40.7127837
6
Getafix

Как говорит Мартин Р., ваша строка "Необязательно (" 5 ")" выглядит так, как будто вы сделали что-то не так.

dasblinkenlight отвечает вам, так что все в порядке, но для будущих читателей я постараюсь добавить альтернативный код как:

if let realString = yourOriginalString {
    text2 = realString
} else {
    text2 = ""
}

text2 в вашем примере выглядит как String, и, возможно, он уже установлен на "", но похоже, что у вас есть yourOriginalString типа Optional (String) где-то, что он не был приведен или использован неправильно.

Я надеюсь, что это может помочь некоторым читателям.

4
Dam

Если вы хотите удалить из строки больше символов, например "a", "A", "b", "B", "c", "C", вы можете сделать это следующим образом:

someString = someString.replacingOccurrences(of: "[abc]", with: "", options: [.regularExpression, .caseInsensitive])
0
Grzegorz R. Kulesza

Если вы получаете вывод Optional(5) при попытке напечатать значение 5 в необязательном Int или String , вы должны сначала развернуть значение:

if let value = text {
    print(value)
}

Теперь у вас есть значение без строки «Необязательно», которую Swift добавляет, когда значение не было развернуто ранее.

0
Ale Mohamad

Вы создали экземпляр text2 как Optional (например, var text2: String?) . Вот почему вы получаете Optional ("5") в вашей строке. .__ забрать? и заменить на:

var text2: String = ""
0
Ryan de Kwaadsteniet

Допустим, у вас есть строка:

var string = "potatoes + carrots"

И вы хотите заменить слово «картофель» в этой строке на «помидоры»

string = string.replacingOccurrences(of: "potatoes", with: "tomatoes", options: NSString.CompareOptions.literal, range: nil)

Если вы напечатаете вашу строку, она будет теперь: "tomatoes + carrots"

Если вы хотите полностью удалить картофель Word из укуса, вы можете использовать:

string = string.replacingOccurrences(of: "potatoes", with: "", options: NSString.CompareOptions.literal, range: nil)

Если вы хотите использовать некоторые другие символы в вашем укусе, используйте:

  • Нулевой символ (\ 0)
  • Обратная косая черта (\)
  • Горизонтальная вкладка (\ t)
  • Перевод строки (\ n)
  • Возврат каретки (\ r)
  • Двойная цитата (\ ")
  • Одиночная цитата (\ ')

Пример:

string = string.replacingOccurrences(of: "potatoes", with: "dog\'s toys", options: NSString.CompareOptions.literal, range: nil)

Вывод: "dog's toys + carrots"

0
Mini Official