Tôi cần một cách để loại bỏ ký tự đầu tiên khỏi chuỗi là khoảng trắng. Tôi đang tìm kiếm một phương thức hoặc thậm chí là một phần mở rộng cho loại Chuỗi mà tôi có thể sử dụng để cắt ra một ký tự của chuỗi.
Tôi cần một cách để loại bỏ ký tự đầu tiên khỏi chuỗi là khoảng trắng. Tôi đang tìm kiếm một phương thức hoặc thậm chí là một phần mở rộng cho loại Chuỗi mà tôi có thể sử dụng để cắt ra một ký tự của chuỗi.
Câu trả lời:
Để loại bỏ khoảng trắng hàng đầu và dấu vết:
let trimmedString = string.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
Swift 3 / Swift 4:
let trimmedString = string.trimmingCharacters(in: .whitespaces)
NSCharacterSet.whitespaceAndNewlineCharacterSet()
nếu bạn muốn cắt bớt các ký tự dòng mới.
Cách chính xác khi bạn muốn loại bỏ tất cả các loại khoảng trắng (dựa trên câu trả lời SO này ) là:
extension String {
var stringByRemovingWhitespaces: String {
let components = componentsSeparatedByCharactersInSet(.whitespaceCharacterSet())
return components.joinWithSeparator("")
}
}
extension String {
func removingWhitespaces() -> String {
return components(separatedBy: .whitespaces).joined()
}
}
Câu trả lời này đã được đăng khi câu hỏi là về việc loại bỏ tất cả các khoảng trắng, câu hỏi đã được chỉnh sửa để chỉ đề cập đến các khoảng trắng hàng đầu. Nếu bạn chỉ muốn xóa các khoảng trắng hàng đầu, hãy sử dụng như sau:
extension String {
func removingLeadingSpaces() -> String {
guard let index = firstIndex(where: { !CharacterSet(charactersIn: String($0)).isSubset(of: .whitespaces) }) else {
return self
}
return String(self[index...])
}
}
Phần mở rộng Chuỗi này sẽ xóa tất cả các khoảng trắng khỏi một chuỗi, không chỉ theo dõi khoảng trắng ...
extension String {
func replace(string:String, replacement:String) -> String {
return self.replacingOccurrences(of: string, with: replacement, options: NSString.CompareOptions.literal, range: nil)
}
func removeWhitespace() -> String {
return self.replace(string: " ", replacement: "")
}
}
Thí dụ:
let string = "The quick brown dog jumps over the foxy lady."
let result = string.removeWhitespace() // Thequickbrowndogjumpsoverthefoxylady.
Swift 3
Bạn chỉ có thể sử dụng phương pháp này để xóa tất cả các khoảng trắng thông thường trong một chuỗi (không xem xét tất cả các loại khoảng trắng):
let myString = " Hello World ! "
let formattedString = myString.replacingOccurrences(of: " ", with: "")
Kết quả sẽ là:
HelloWorld!
Bạn cũng có thể sử dụng regex.
let trimmedString = myString.stringByReplacingOccurrencesOfString("\\s", withString: "", options: NSStringCompareOptions.RegularExpressionSearch, range: nil)
Đối với Swift 3.0+, xem các câu trả lời khác. Đây hiện là câu trả lời kế thừa cho Swift 2.x
Như đã trả lời ở trên, vì bạn quan tâm đến việc xóa ký tự đầu tiên, phương thức cá thể .opesByTrimmingChar characterInset () sẽ hoạt động tốt:
myString.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
Bạn cũng có thể tạo bộ ký tự của riêng mình để cắt ranh giới của chuỗi bằng cách, ví dụ:
myString.stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString: "<>"))
Ngoài ra còn có một phương thức được xây dựng để xử lý loại bỏ hoặc thay thế các chuỗi con được gọi là stringByReplinatingOccurrencesOfString (đích: Chuỗi, thay thế: Chuỗi) . Nó có thể xóa khoảng trắng hoặc bất kỳ mẫu nào khác xảy ra ở bất kỳ đâu trong chuỗi của bạn
Bạn có thể chỉ định các tùy chọn và phạm vi, nhưng không cần:
myString.stringByReplacingOccurrencesOfString(" ", withString: "")
Đây là một cách dễ dàng để loại bỏ hoặc thay thế bất kỳ mẫu ký tự lặp lại nào trong chuỗi của bạn và có thể bị xiềng xích, mặc dù mỗi lần nó phải vượt qua toàn bộ chuỗi của bạn, làm giảm hiệu quả. Vì vậy, bạn có thể làm điều này:
myString.stringByReplacingOccurrencesOfString(" ", withString: "").stringByReplacingOccurrencesOfString(",", withString: "")
... nhưng nó sẽ mất gấp đôi thời gian.
Tài liệu .opesByReplateOccurrencesOfString () từ trang web của Apple
Việc xâu chuỗi các phương thức đối tượng Chuỗi này đôi khi có thể rất thuận tiện cho một lần chuyển đổi, ví dụ nếu bạn muốn chuyển đổi một NSData blob ngắn thành chuỗi hex không có khoảng trắng trong một dòng, bạn có thể thực hiện điều này với phép nội suy Chuỗi tích hợp của Swift và một số cắt xén và thay thế:
("\(myNSDataBlob)").stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString: "<>")).stringByReplacingOccurrencesOfString(" ", withString: "")
Tôi sẽ sử dụng tiện ích mở rộng này, để linh hoạt và bắt chước cách các bộ sưu tập khác thực hiện:
extension String {
func filter(pred: Character -> Bool) -> String {
var res = String()
for c in self.characters {
if pred(c) {
res.append(c)
}
}
return res
}
}
"this is a String".filter { $0 != Character(" ") } // "thisisaString"
Nếu bạn muốn xóa khoảng trắng ở phía trước (và phía sau) nhưng không phải ở giữa, bạn nên sử dụng stringByTrimmingCharactersInSet
let dirtyString = " First Word "
let cleanString = dirtyString.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
Nếu bạn muốn xóa khoảng trắng khỏi bất kỳ vị trí nào trong chuỗi, thì bạn có thể muốn xem chuỗiByReplinating ...
" First Word "
đầu ra "First Word"
).
Swift 4, 4.2 và 5
Chỉ xóa không gian từ trước và cuối
let str = " Akbar Code "
let trimmedString = str.trimmingCharacters(in: .whitespacesAndNewlines)
Xóa khoảng trắng khỏi mọi vị trí trong chuỗi
let stringWithSpaces = " The Akbar khan code "
let stringWithoutSpaces = stringWithSpaces.replacingOccurrences(of: " ", with: "")
Bạn cũng có thể thử cái này
let updatedString = searchedText?.stringByReplacingOccurrencesOfString(" ", withString: "-")
extension String {
var removingWhitespaceAndNewLines: String {
return removing(.whitespacesAndNewlines)
}
func removing(_ forbiddenCharacters: CharacterSet) -> String {
return String(unicodeScalars.filter({ !forbiddenCharacters.contains($0) }))
}
}
Nếu bất cứ ai loại bỏ không gian thừa từ chuỗi eg = "This is the demo text remove extra space between the words."
Bạn có thể sử dụng Chức năng này trong Swift 4.
func removeSpace(_ string: String) -> String{
var str: String = String(string[string.startIndex])
for (index,value) in string.enumerated(){
if index > 0{
let indexBefore = string.index(before: String.Index.init(encodedOffset: index))
if value == " " && string[indexBefore] == " "{
}else{
str.append(value)
}
}
}
return str
}
và kết quả sẽ là
"This is the demo text remove extra space between the words."
Hi điều này có thể là muộn nhưng đáng để thử. Đây là từ một tập tin sân chơi. Bạn có thể làm cho nó một phần mở rộng Chuỗi.
Điều này được viết trong Swift 5.3
Cách 1:
var str = "\n \tHello, playground "
if let regexp = try? NSRegularExpression(pattern: "^\\s+", options: NSRegularExpression.Options.caseInsensitive) {
let mstr = NSMutableString(string: str)
regexp.replaceMatches(in: mstr, options: [], range: NSRange(location: 0, length: str.count), withTemplate: "")
str = mstr as String
}
Result: "Hello, playground "
Cách 2:
if let c = (str.first { !($0 == " " || $0 == "\t" || $0 == "\n") }) {
if let nonWhiteSpaceIndex = str.firstIndex(of: c) {
str.replaceSubrange(str.startIndex ..< nonWhiteSpaceIndex, with: "")
}
}
Result: "Hello, playground "
Phiên bản Swift 3
//This function trim only white space:
func trim() -> String
{
return self.trimmingCharacters(in: CharacterSet.whitespaces)
}
//This function trim whitespeaces and new line that you enter:
func trimWhiteSpaceAndNewLine() -> String
{
return self.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
}
let strFirstName = txtFirstName.text?.trimmingCharacters(in:
CharacterSet.whitespaces)
Một câu trả lời khác, đôi khi chuỗi đầu vào có thể chứa nhiều khoảng trắng giữa các từ. Nếu bạn cần chuẩn hóa để chỉ có 1 khoảng trắng giữa các từ, hãy thử điều này (Swift 4/5)
let inputString = " a very strange text ! "
let validInput = inputString.components(separatedBy:.whitespacesAndNewlines).filter { $0.count > 0 }.joined(separator: " ")
print(validInput) // "a very strange text !"
string = string.filter ({!" ".contains($0) })
Swift 3 phiên bản câu trả lời của BadbridgeCat
extension String {
func replace(_ string:String, replacement:String) -> String {
return self.replacingOccurrences(of: string, with: replacement, options: NSString.CompareOptions.literal, range: nil)
}
func removeWhitespace() -> String {
return self.replace(" ", replacement: "")
}
}
whitespaceCharacterSet
là cách tốt nhất.
class SpaceRemover
{
func SpaceRemover(str :String)->String
{
var array = Array(str)
var i = array.count
while(array.last == " ")
{
var array1 = [Character]()
for item in 0...i - 1
{
array1.append(array[item])
}
i = i - 1
array = array1
print(array1)
print(array)
}
var arraySecond = array
var j = arraySecond.count
while(arraySecond.first == " ")
{
var array2 = [Character]()
if j > 1
{
for item in 1..<j
{
array2.append(arraySecond[item])
}
}
j = j - 1
arraySecond = array2
print(array2)
print(arraySecond)
}
print(arraySecond)
return String(arraySecond)
}
}
Để xóa tất cả khoảng trắng khỏi chuỗi:
let space_removed_string = (yourstring?.components(separatedBy: " ").joined(separator: ""))!