如何删除字符串中的所有空格和 n r?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何删除字符串中的所有空格和 n r?相关的知识,希望对你有一定的参考价值。

删除Swift中String中所有空格 的最有效方法是什么?

我试过了:

for character in string.characters {

}

但这有点不方便。

答案

斯威夫特4:

let text = "This 
 is a st	ri
ng"
let test = String(text.filter { !" 
	
".contains($0) })

输出:

print(test) // Thisisastring

虽然Fahri的答案很好,但我更喜欢纯粹的Swift;)

另一答案

斯威夫特4:

let text = "This 
 is a st	ri
ng"
let cleanedText = text.filter { !" 
	
".characters.contains($0) }
另一答案

编辑/更新:

Swift 5或更高版本

我们可以使用新的Character属性isNewlineisWhitespace


let textInput = "Line 1 
 Line 2 

"
let result = textInput.filter { !$0.isNewline && !$0.isWhitespace }

result  //  "Line1Line2"

extension StringProtocol where Self: RangeReplaceableCollection {
    var removingAllWhitespacesAndNewlines: Self {
        return filter { !$0.isNewline && !$0.isWhitespace }
    }
    mutating func removeAllWhitespacesAndNewlines() {
        removeAll { $0.isNewline || $0.isWhitespace }
    }
}

let textInput = "Line 1 
 Line 2 

"
let result = textInput.removingAllWhitespacesAndNewlines   //"Line1Line2"

var test = "Line 1 
 Line 2 

"
test.removeAllWhitespacesAndNewlines()
print(test)  // "Line1Line2"

注意:对于较旧的Swift版本语法检查编辑历史记录

另一答案

为了完整起见,这是正则表达式版本

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

对于Swift 4:

let myString = "This 
 is a st	ri
ng"
let trimmedString = myString.components(separatedBy: .whitespacesAndNewlines).joined()
另一答案

假设你有这个字符串:“有些单词 nanother word n r n这里有点像 rmdjsbclsdcbsdilvb n rand这样的东西:)”

这里有如何删除所有可能的空间:

let possibleWhiteSpace:NSArray = [" ","	", "

", "
","
"] //here you add other types of white space
    var string:NSString = "some words 
another word

 here something 	and something like 
mdjsbclsdcbsdilvb 

and 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

如果这回应你的问题,请告诉我:)

另一答案

斯威夫特4:

let string = "Test
 with an st	ri
ng"
print(string.components(separatedBy: .whitespacesAndNewlines))
// Result: "Test with an string"
另一答案

如果用空格表示空格,请注意存在多个空白字符,尽管它们看起来都是一样的。

以下解决方案考虑到了这一点:

斯威夫特5:

 extension String {

    func removingAllWhitespaces() -> String {
        return removingCharacters(from: .whitespaces)
    }

    func removingCharacters(from set: CharacterSet) -> String {
        var newString = self
        newString.removeAll { char -> Bool in
            guard let scalar = char.unicodeScalars.first else { return false }
            return set.contains(scalar)
        }
        return newString
    }
}


let noNewlines = "Hello
World".removingCharacters(from: .newlines)
print(noNewlines)

let noWhitespaces = "Hello World".removingCharacters(from: .whitespaces)
print(noWhitespaces)
另一答案

用这个:

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

输出:Thisismystring

另一答案

如果有人想知道为什么,尽管将“ n”和“ r”置于集合中,“ r n”不会从字符串中删除,这是因为“ r n”被swift视为一个字符。

斯威夫特4:

let text = "
 This 
 is a st	ri
ng"
let test = String(text.filter { !"

	
".contains($0) })

“ n”不会意外重复

以上是关于如何删除字符串中的所有空格和 n r?的主要内容,如果未能解决你的问题,请参考以下文章

如何从字符串中删除 \n 和 \r

从R中的字符串中删除所有特殊字符?

如何使用正则表达式删除尾随空格?

从 JSON 字符串中删除所有缩进和空格,除了它在 Ruby 中的值之外

如何从PHP和Javascript中的字符串中删除所有空格[重复]

python如何去掉字符串中的斜杠