Обрезка @mattdipasquale - очень распространенное название этой операции
Остин
Ответы:
831
Вот как вы удаляете все пробелы в начале и в конце String.
(Пример протестирован с Swift 2.0 .)
let myString =" \t\t Let's trim all the whitespace \n \t \n "let trimmedString = myString.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())//Returns"Let's trim all the whitespace"
(Пример протестирован со Swift 3+ .)
let myString =" \t\t Let's trim all the whitespace \n \t \n "let trimmedString = myString.trimmingCharacters(in:.whitespacesAndNewlines)//Returns"Let's trim all the whitespace"
Не будет работать на swif 1.2, так как нет автоматического соглашения из String в NSString.
Elcuco
5
Он отлично работает в Swift 1.2 - у объекта String есть метод stringByTrimmingCharactersInSet (это не исключение NSString)
Бен Додсон
8
В Swift 3.0 есть: let trimmedString = myString.trimmingCharacters (in: .whitespaces)
kikettas
6
Это не значит, что оно устарело. Не все еще используют Swift 3.0.
c.dunlap
2
В Swift 3.0 это не удалит пробелы между строками. Это удалит только начальные и конечные пробелы. Для этого обратитесь к этому ответу: stackoverflow.com/a/39067610/4886069
130
Поместите этот код в файл вашего проекта, что-то вроде Utils.swift:
Это безопасно? Как предотвратить коллизию имени метода, если Apple или какая-либо сторонняя библиотека добавляет тот же метод к String?
ma11hew28
12
Расширения безопасны - и фактически Apple активно использует их в своих внутренних API. Вы не можете предотвратить любые конфликты имен, и это на самом деле хорошо. Вы получите ошибку компиляции, когда Apple, наконец, добавит метод trim (), и вы будете знать, что ваше расширение больше не требуется. Расширения довольно элегантны и размещают методы там, где они вам нужны, а не какой-то непонятный служебный класс, такой как StringUtils - у меня проблема в том, что у класса нет нужного мне метода, потому что не была импортирована какая-то другая инфраструктура, добавляющая в него расширения.
Absmiths
3
Привет, в Swift 3 должен вернутьсяreturn self.trimmingCharacters(in: .whitespacesAndNewlines)
7
let result = "Hello World" .trim () // result = "HelloWorld", это не приведет к удалению пробелов, содержащихся в строке. удалит только ведущие и конечные пробелы.
Сахил
2
это не удалит пробелы между строкой. Это только удаляет начальное и конечное пространство. Поэтому лучший способ удалить пробелы между строками - использовать yourtext? .ReplacingOccurferences (of: ", with:" ") вместо использования
Что, если я только хочу урезать трейлинг и лидирующие пробелы?
Сурагч
1
Я новичок, чтобы быстро 3 расширения. Если библиотека изменяет String, а я также изменяю String, возможно ли получить коллизии? Что если в будущих версиях swift будет использоваться метод trim ()? Итак ... в основном ... безопасны ли расширения, как это?
Гатстер
1
возможно получить столкновения.
Алекс Браун,
let result = "Hello World" .trim () // result = "HelloWorld", это не приведет к удалению пробелов, содержащихся в строке. удалит только начальные и конечные пробелы
Sahil
45
Swift 5 & 4.2
let trimmedString =" abc ".trimmingCharacters(in:.whitespaces)//trimmedString =="abc"
Это на самом деле «пробелы и новые линии», ха-ха, один слева.
RainCast
9
Да, вы можете сделать это так:
var str =" this is the answer "
str = str.trimmingCharacters(in:CharacterSet.whitespacesAndNewlines)
print(srt)//"this is the answer"
CharacterSet на самом деле является действительно мощным инструментом для создания правила обрезки с гораздо большей гибкостью, чем предопределенный набор, такой как .whitespacesAndNewlines.
Например:
var str =" Hello World !"let cs =CharacterSet.init(charactersIn:" !")
str = str.trimmingCharacters(in: cs)
print(str)//"Hello World"
var str ="Lorem Ipsum is simply dummy text of the printing and typesetting industry."//str is length 74
print(str)//O/P: Lorem Ipsum is simply dummy text of the printing and typesetting industry.
str = str.trunc(40)
print(str)//O/P:LoremIpsumis simply dummy text of the
extensionString{/// EZSE: Trims white space and new line characters
publicmutatingfunc trim(){self=self.trimmed()}/// EZSE: Trims white space and new line characters, returns a new string
publicfunc trimmed()->String{returnself.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())}}
Я создал эту функцию, которая позволяет вводить строку и возвращает список строк, обрезанных любым символом
funcTrim(input:String, character:Character)->[String]{var collection:[String]=[String]()var index =0var copy = input
let iterable = input
var trim = input.startIndex.advancedBy(index)for i in iterable.characters
{if(i == character){
trim = input.startIndex.advancedBy(index)// apennding to the list
collection.append(copy.substringToIndex(trim))//cut the input
index +=1
trim = input.startIndex.advancedBy(index)
copy = copy.substringFromIndex(trim)
index =0}else{
index +=1}}
collection.append(copy)return collection
}
как не нашел способ сделать это в Swift (компилируется и отлично работает в Swift 2.0)
Можете ли вы определить, что вы подразумеваете под «отделкой», с примером. Поскольку ваш тип возвращаемого значения - [String], вы не можете реализовать то, что запросил OP. (который возвращает строку)
Ответы:
Вот как вы удаляете все пробелы в начале и в конце
String
.(Пример протестирован с Swift 2.0 .)
(Пример протестирован со Swift 3+ .)
Надеюсь это поможет.
источник
Поместите этот код в файл вашего проекта, что-то вроде Utils.swift:
Таким образом, вы сможете сделать это:
Решение Swift 3.0
Таким образом, вы сможете сделать это:
источник
String
?return self.trimmingCharacters(in: .whitespacesAndNewlines)
В Swift 3.0
И вы можете позвонить
источник
Swift 5 & 4.2
источник
Свифт 3
источник
Да, вы можете сделать это так:
CharacterSet на самом деле является действительно мощным инструментом для создания правила обрезки с гораздо большей гибкостью, чем предопределенный набор, такой как .whitespacesAndNewlines.
Например:
источник
Обрезать строку до определенной длины
Если вы ввели блок предложения / текста и хотите сохранить из него только указанную длину. Добавьте следующее расширение в класс
использование
источник
Вы можете использовать метод trim () в расширении Swift String, которое я написал https://bit.ly/JString .
источник
Еще один похожий способ:
Использование:
источник
Взято из этого репо: https://github.com/goktugyil/EZSwiftExtensions/commit/609fce34a41f98733f97dfd7b4c23b5d16416206
источник
В финале Swift3 XCode 8
Обратите внимание, что это
CharacterSet.whitespaces
больше не функция!(Ни то, ни другое
NSCharacterSet.whitespaces
)источник
// Swift 4.0 Удаление пробелов и новых строк
источник
Вы также можете отправлять символы, которых вы хотите обрезать
источник
Я создал эту функцию, которая позволяет вводить строку и возвращает список строк, обрезанных любым символом
как не нашел способ сделать это в Swift (компилируется и отлично работает в Swift 2.0)
источник
Не забудьте
import Foundation
илиUIKit
.Результат:
В противном случае вы получите:
источник