我需要一种方法来删除字符串的第一个字符,这是一个空格。我正在寻找一个方法,甚至是一个扩展的字符串类型,我可以用来削减字符串的字符。
当前回答
如果你想要从前面(和后面)而不是中间删除空格,你应该使用stringByTrimmingCharactersInSet
let dirtyString = " First Word "
let cleanString = dirtyString.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
如果你想从字符串的任何地方删除空格,那么你可能需要查看stringbyreplacement…
其他回答
羽毛球猫的答案的Swift 3版本
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: "")
}
}
关于Swift 3.0+,请参阅其他答案。这是Swift 2.x现在的一个遗留答案
如上所述,由于你对删除第一个字符感兴趣,.stringByTrimmingCharactersInSet()实例方法将很好地工作:
myString.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
你也可以让你自己的字符集来修剪你的字符串的边界,例如:
myString.stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString: "<>"))
还有一个内置的实例方法来处理删除或替换子字符串,称为stringByReplacingOccurrencesOfString(目标:字符串,替换:字符串)。它可以删除字符串中任何地方出现的空格或任何其他模式
你可以指定选项和范围,但不需要:
myString.stringByReplacingOccurrencesOfString(" ", withString: "")
这是一种简单的方法,可以删除或替换字符串中任何重复的字符模式,并且可以被链接,尽管每次遍历它都必须再次遍历整个字符串,从而降低了效率。所以你可以这样做:
myString.stringByReplacingOccurrencesOfString(" ", withString: "").stringByReplacingOccurrencesOfString(",", withString: "")
...但要花两倍的时间。
.stringByReplacingOccurrencesOfString()文档来自苹果网站
链接这些String实例方法有时可以非常方便地进行一次性转换,例如,如果你想将一个短的NSData blob转换为一行中没有空格的十六进制字符串,你可以使用Swift内置的String插值和一些修剪和替换:
("\(myNSDataBlob)").stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString: "<>")).stringByReplacingOccurrencesOfString(" ", withString: "")
对于任何想要从字符串中删除前导空格的人(正如问题标题所明确要求的那样),这里有一个答案:
假设:
let string = " Hello, World! "
要删除所有前导空格,使用以下代码:
var filtered = ""
var isLeading = true
for character in string {
if character.isWhitespace && isLeading {
continue
} else {
isLeading = false
filtered.append(character)
}
}
print(filtered) // "Hello, World! "
我相信有比这更好的代码,但它已经完成了我的工作。
斯威夫特3
你可以简单地使用这个方法删除字符串中的所有普通空格(不考虑所有类型的空白):
let myString = " Hello World ! "
let formattedString = myString.replacingOccurrences(of: " ", with: "")
结果将是:
HelloWorld!
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)
}
}