ฉันต้องการวิธีลบอักขระแรกจากสตริงซึ่งเป็นช่องว่าง ฉันกำลังมองหาวิธีการหรือแม้กระทั่งการขยายประเภท String ที่ฉันสามารถใช้เพื่อตัดอักขระของสตริง
ฉันต้องการวิธีลบอักขระแรกจากสตริงซึ่งเป็นช่องว่าง ฉันกำลังมองหาวิธีการหรือแม้กระทั่งการขยายประเภท String ที่ฉันสามารถใช้เพื่อตัดอักขระของสตริง
คำตอบ:
หากต้องการลบช่องว่างนำหน้าและต่อท้าย:
let trimmedString = string.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
Swift 3 / Swift 4:
let trimmedString = string.trimmingCharacters(in: .whitespaces)
NSCharacterSet.whitespaceAndNewlineCharacterSet()
ถ้าคุณต้องการตัดอักขระขึ้นบรรทัดใหม่ด้วย
วิธีที่ถูกต้องเมื่อคุณต้องการลบช่องว่างทุกประเภท (ตามคำตอบ SO นี้ ) คือ:
extension String {
var stringByRemovingWhitespaces: String {
let components = componentsSeparatedByCharactersInSet(.whitespaceCharacterSet())
return components.joinWithSeparator("")
}
}
extension String {
func removingWhitespaces() -> String {
return components(separatedBy: .whitespaces).joined()
}
}
คำตอบนี้ถูกโพสต์เมื่อคำถามเกี่ยวกับการลบช่องว่างทั้งหมดคำถามถูกแก้ไขเพื่อพูดถึงเฉพาะช่องว่างนำหน้า หากคุณต้องการลบช่องว่างนำหน้าให้ใช้สิ่งต่อไปนี้:
extension String {
func removingLeadingSpaces() -> String {
guard let index = firstIndex(where: { !CharacterSet(charactersIn: String($0)).isSubset(of: .whitespaces) }) else {
return self
}
return String(self[index...])
}
}
ส่วนขยายของสตริงนี้จะลบช่องว่างทั้งหมดออกจากสตริงไม่ใช่เพียงแค่ลบช่องว่างต่อท้าย ...
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: "")
}
}
ตัวอย่าง:
let string = "The quick brown dog jumps over the foxy lady."
let result = string.removeWhitespace() // Thequickbrowndogjumpsoverthefoxylady.
สวิฟท์ 3
คุณสามารถใช้วิธีนี้เพื่อลบช่องว่างปกติทั้งหมดในสตริง (ไม่พิจารณาช่องว่างทุกประเภท):
let myString = " Hello World ! "
let formattedString = myString.replacingOccurrences(of: " ", with: "")
ผลลัพธ์จะเป็น:
HelloWorld!
คุณยังสามารถใช้ regex
let trimmedString = myString.stringByReplacingOccurrencesOfString("\\s", withString: "", options: NSStringCompareOptions.RegularExpressionSearch, range: nil)
สำหรับ Swift 3.0+ ดูคำตอบอื่น ๆ นี่คือคำตอบดั้งเดิมสำหรับ Swift 2.x
ตามที่ได้รับคำตอบด้านบนเนื่องจากคุณสนใจที่จะลบตัวอักษรตัวแรกวิธีการ. stringByTrimmingCharactersInSet ()จะทำงานได้ดี:
myString.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
นอกจากนี้คุณยังสามารถสร้างชุดอักขระของคุณเองเพื่อตัดขอบเขตของสายอักขระของคุณด้วยเช่น:
myString.stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString: "<>"))
นอกจากนี้ยังมีวิธีการอินสแตนซ์ในตัวเพื่อจัดการกับการลบหรือแทนที่สตริงย่อยที่เรียกว่าstringByReplacingOccurrencesOfString (เป้าหมาย: สตริงการแทนที่: สตริง)String) มันสามารถลบช่องว่างหรือรูปแบบอื่น ๆ ที่เกิดขึ้นที่ใดก็ได้ในสตริงของคุณ
คุณสามารถระบุตัวเลือกและช่วง แต่ไม่จำเป็นต้อง:
myString.stringByReplacingOccurrencesOfString(" ", withString: "")
นี่เป็นวิธีที่ง่ายในการลบหรือแทนที่รูปแบบการทำซ้ำของอักขระในสายอักขระของคุณและสามารถถูกผูกมัดแม้ว่าแต่ละครั้งที่ผ่านจะต้องผ่านอีกครั้งผ่านสายอักขระทั้งหมดของคุณลดประสิทธิภาพ ดังนั้นคุณสามารถทำสิ่งนี้:
myString.stringByReplacingOccurrencesOfString(" ", withString: "").stringByReplacingOccurrencesOfString(",", withString: "")
... แต่จะใช้เวลานานกว่าสองเท่า
.stringByReplacingOccurrencesOfString () เอกสารประกอบจากไซต์ Apple
การผูกมัดอินสแตนซ์ของสตริงเหล่านี้บางครั้งอาจสะดวกมากสำหรับการแปลงหนึ่งครั้งตัวอย่างเช่นถ้าคุณต้องการแปลง NSData สั้น ๆ เป็นสตริงฐานสิบหกโดยไม่มีช่องว่างในบรรทัดเดียวคุณสามารถทำได้ด้วย Swift's built in Interpolation แทนที่:
("\(myNSDataBlob)").stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString: "<>")).stringByReplacingOccurrencesOfString(" ", withString: "")
สำหรับswift 3.0
import Foundation
var str = " Hear me calling"
extension String {
var stringByRemovingWhitespaces: String {
return components(separatedBy: .whitespaces).joined()
}
}
str.stringByRemovingWhitespaces // Hearmecalling
กรณีที่ยอดเยี่ยมในการใช้ regex:
" this is wrong contained teee xt "
.replacingOccurrences(of: "^\\s+|\\s+|\\s+$",
with: "",
options: .regularExpression)
// thisiswrongcontainedteeext
ฉันจะใช้ส่วนขยายนี้เพื่อให้มีความยืดหยุ่นและเลียนแบบวิธีการสะสมอื่น ๆ :
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"
หากคุณต้องการที่จะลบช่องว่างจากด้านหน้า (และด้านหลัง) แต่ไม่ใช่ตรงกลางคุณควรใช้ stringByTrimmingCharactersInSet
let dirtyString = " First Word "
let cleanString = dirtyString.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
หากคุณต้องการลบช่องว่างออกจากที่ใดก็ได้ในสตริงคุณอาจต้องการดู stringByReplacing ...
" First Word "
ผลลัพธ์"First Word"
)
Swift 4, 4.2 และ 5
ลบช่องว่างจากด้านหน้าและสิ้นสุดเท่านั้น
let str = " Akbar Code "
let trimmedString = str.trimmingCharacters(in: .whitespacesAndNewlines)
ลบช่องว่างออกจากทุกที่ในสตริง
let stringWithSpaces = " The Akbar khan code "
let stringWithoutSpaces = stringWithSpaces.replacingOccurrences(of: " ", with: "")
คุณสามารถลองสิ่งนี้ได้เช่นกัน
let updatedString = searchedText?.stringByReplacingOccurrencesOfString(" ", withString: "-")
ลองใช้การเขียนโปรแกรมใช้งานได้เพื่อลบช่องว่างสีขาว:
extension String {
func whiteSpacesRemoved() -> String {
return self.filter { $0 != Character(" ") }
}
}
extension String {
var removingWhitespaceAndNewLines: String {
return removing(.whitespacesAndNewlines)
}
func removing(_ forbiddenCharacters: CharacterSet) -> String {
return String(unicodeScalars.filter({ !forbiddenCharacters.contains($0) }))
}
}
หากใครลบช่องว่างเพิ่มเติมจากสตริงเช่น = "This is the demo text remove extra space between the words."
คุณสามารถใช้ฟังก์ชั่นนี้ได้ใน 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
}
และผลลัพธ์จะเป็น
"This is the demo text remove extra space between the words."
สวัสดีนี่อาจจะสาย แต่ก็คุ้มค่าที่จะลอง นี่คือจากไฟล์สนามเด็กเล่น คุณสามารถทำให้มันเป็นส่วนขยายของสตริง
สิ่งนี้เขียนใน Swift 5.3
วิธีที่ 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 "
วิธีที่ 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 "
รุ่น 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)
อีกคำตอบหนึ่งบางครั้งสตริงป้อนข้อมูลอาจมีช่องว่างระหว่างคำมากกว่าหนึ่งช่อง หากคุณต้องการสร้างมาตรฐานให้มีช่องว่างระหว่างคำเพียง 1 คำให้ลองใช้ (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 !"
สำหรับฉันบรรทัดต่อไปนี้ใช้เพื่อลบพื้นที่สีขาว
let result = String(yourString.filter {![" ", "\t", "\n"].contains($0)})
string = string.filter ({!" ".contains($0) })
คำตอบของ BadmintonCat เวอร์ชั่น 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: "")
}
}
whitespaceCharacterSet
เป็นวิธีปฏิบัติที่ดีที่สุด
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)
}
}
ในการลบช่องว่างทั้งหมดออกจากสตริง:
let space_removed_string = (yourstring?.components(separatedBy: " ").joined(separator: ""))!