2016-01-22 14 views

Trả lời

30

Swift 4:

let text = "This \n is a st\tri\rng" 
let test = String(text.filter { !" \n\t\r".contains($0) }) 

Output:

print(test) // Thisisastring 

Trong khi câu trả lời Fahri là tốt đẹp, tôi thích nó là tinh khiết Swift;)

+0

Tôi nghĩ 'bộ lọc' quá đắt đối với điều này, có gì sai với' removeSubrange' hoặc 'stringByTrimmingCharacters', v.v ...? – kakubei

+0

@kakubei: removeSubrange có nghĩa là bạn phải tìm kiếm toàn bộ chuỗi cho các trang con, đã đắt tiền như lọc trước khi bạn thậm chí thực hiện bất kỳ thao tác xóa nào. stringByTrimmingCharacters chỉ trims ở đầu và cuối của một chuỗi, không phải ở giữa các từ. –

0

Sử dụng này:

let aString: String = "This is my string" 
let newString = aString.stringByReplacingOccurrencesOfString(" ", withString: "", options:[], range: nil) 
print(newString) 

Output: Thisismystring

5

Bạn có thể sử dụng NSCharacterSetwhitespaceAndNewlineCharacterSet để phá vỡ chuỗi của bạn và sử dụng joinWithSeparator() phương pháp để nối nó lại như sau:

let textInput = "Line 1 \n Line 2 \n\r" 
let whitespaceAndNewlineCharacterSet = NSCharacterSet.whitespaceAndNewlineCharacterSet() 
let components = textInput.componentsSeparatedByCharactersInSet(whitespaceAndNewlineCharacterSet) 
let result = components.joinWithSeparator("") //"Line1Line2" 

Bạn cũng có thể mở rộng String để làm cho nó dễ dàng hơn để bạn có thể sử dụng nó bất cứ nơi nào trong mã của bạn:

extension String { 
    var removingWhitespacesAndNewlines: String { 
     return componentsSeparatedByCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()).joinWithSeparator("") 
    } 
} 

chỉnh sửa/cập nhật:

Swift3 hay muộn

let textInput = "Line 1 \n Line 2 \n\r" 
let result = textInput.components(separatedBy: .whitespacesAndNewlines).joined() //"Line1Line2" 

extension String { 
    var removingWhitespacesAndNewlines: String { 
     return components(separatedBy: .whitespacesAndNewlines).joined() 
    } 
} 

let textInput = "Line 1 \n Line 2 \n\r" 
let result = textInput.removingWhitespacesAndNewlines //"Line1Line2" 
1

Giả sử rằng bạn có chuỗi này: " một số từ \ nanother từ \ n \ r ở đây một cái gì đó \ tvà một cái gì đó như \ rmdjsbclsdcbsdilvb \ n \ rvà cuối cùng này :) "

tại đây làm thế nào để loại bỏ tất cả các không gian có thể:

let possibleWhiteSpace:NSArray = [" ","\t", "\n\r", "\n","\r"] //here you add other types of white space 
    var string:NSString = "some words \nanother word\n\r here something \tand something like \rmdjsbclsdcbsdilvb \n\rand finally this :)" 
    print(string)// initial string with white space 
    possibleWhiteSpace.enumerateObjectsUsingBlock { (whiteSpace, idx, stop) -> Void in 
     string = string.stringByReplacingOccurrencesOfString(whiteSpace as! String, withString: "") 
    } 
    print(string)//resulting string 

Hãy cho tôi biết nếu phản ứng này cho câu hỏi của bạn :)

-1

Swift 4:

let text = "This \n is a st\tri\rng" 
let cleanedText = text.filter { !" \n\t\r".characters.contains($0) } 
1

Vì lợi ích của sự hoàn chỉnh này là phiên bản Regular Expression

let string = "What is the most efficient way to remove all the spaces and \n \r \tin a String in Swift" 
let stringWithoutWhitespace = string.replacingOccurrences(of: "\\s", with: "", options: .regularExpression) 
// -> "WhatisthemostefficientwaytoremoveallthespacesandinaStringinSwift" 
+0

Cảm ơn, điều này đã làm việc cho tôi. Ngoài ra, tôi muốn thay thế tất cả các lần xuất hiện liên tiếp của \ n, \ r, \ t hoặc dấu cách bằng một dấu cách, vì vậy tôi đã sử dụng "\\ s +" và được thay thế bằng "". cho phép chuỗi = "đây là một ví dụ \ n \ t" cho phép newString = string.replacingOccurrences (của: "\\ s +", với: "", tùy chọn: .regularExpression) // Kết quả -> "đây là một ví dụ " – Chuy47

0

Đối với Swift 4:

let myString = "This \n is a st\tri\rng" 
let trimmedString = myString.components(separatedBy: .whitespacesAndNewlines).joined() 
+0

Đã có một giải pháp hoàn hảo. –

+0

bộ lọc là quá đắt và tôi nghĩ rằng cho những người khởi động này sẽ hữu ích hơn .. đó là lý do tại sao tôi thêm –

+0

Ok, nếu bạn nghĩ như vậy thì nó là tốt. Nhưng sau đó đi trước và giải thích giải pháp của bạn xin vui lòng. –

Các vấn đề liên quan