আমি কীভাবে একটি স্ট্রিং থেকে সমস্ত নেতৃস্থানীয় স্পেসগুলি সরিয়ে ফেলব? - দ্রুত


170

আমার প্রথম অক্ষরটি একটি স্ট্রিং থেকে সরানোর একটি উপায় প্রয়োজন যা স্থান is আমি স্ট্রিং টাইপের জন্য এমন কোনও পদ্ধতি বা এমনকি কোনও এক্সটেনশান খুঁজছি যা আমি স্ট্রিংয়ের একটি চরিত্র কাটাতে ব্যবহার করতে পারি।


8
আপনি কি প্রথম স্পেস অক্ষর বা স্ট্রিংয়ের সমস্ত স্থান অক্ষর মুছতে চান ?
অ্যালেক্স

উত্তর:


380

শীর্ষস্থানীয় এবং চলমান শ্বেতস্পেসগুলি অপসারণ করতে:

let trimmedString = string.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())

সুইফট 3 / সুইফট 4:

let trimmedString = string.trimmingCharacters(in: .whitespaces)

180
এটি কেবল শীর্ষস্থানীয় এবং শ্বেতস্থান অনুসরণ করার জন্য কাজ করবে। এটি স্ট্রিংয়ের মধ্যে থাকা হোয়াইটস্পেসগুলি সরিয়ে ফেলবে না।
সূর্য

87
আপনি যদি সমস্ত ফাঁকা জায়গা সরিয়ে নিতে চান তবে আপনি myString.stringByReplacingOccurrencesOfString ("" সহ, স্ট্রিং: "") চেষ্টা করতে পারেন
লুকাস

6
আপনি NSCharacterSet.whitespaceAndNewlineCharacterSet()যদি নতুন লাইনের চরিত্রগুলিও ছাঁটাই করতে চান তবে আপনিও ব্যবহার করতে পারেন।
ব্লিপ করুন

2
: এটা সুইফট 3.0 এর সাথে কাজ করে এবং, ব্যবহার উত্তর স্ট্রিং মধ্যে সাদা স্পেস অপসারণ করতে stackoverflow.com/a/39067610/4886069

2
সুইফ্ট 3+ ব্যবহারকারীর: আপনার স্ট্রিং। রিপ্লেসিংঅ্যাক্সিেন্সস (এর: "" ", এর সাথে:" ")
নাদেশা লাকমল

144

আপনি যখন সমস্ত ধরণের হোয়াইটস্পেসগুলি মুছতে চান তখন সঠিক উপায় ( এই উত্তরের উপর ভিত্তি করে ):

extension String {
    var stringByRemovingWhitespaces: String {
        let components = componentsSeparatedByCharactersInSet(.whitespaceCharacterSet())
        return components.joinWithSeparator("")
    }
}

সুইফট 3.0+ (3.0, 3.1, 3.2, 4.0)

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...])
    }
}

5
নতুন রেখাগুলির জন্যও। উপাদানগুলি (বিচ্ছিন্ন বাই:। হোয়াইট স্পেসস এবং নিউইলাইনস)
ডেরেক

এই না func একজন Var হওয়া উচিত
Jakub Truhlář

1
কারণ বৈশিষ্ট্যটির যুক্তি । আপনি যখন কোনও ফাংশন করবেন তখন আপনি একটি গণনা করা সম্পত্তি তৈরি করছেন । এটি বরং একটি মূল্য ধরে রেখে অন্যটি থেকে এটি গণনা করে শ্রীমতি করছে। দেখুন: স্ট্যাকওভারফ্লো.
com/ প্রশ্নগুলি

4
@ জাকুবট্রুহ্লář - এটি মতামতের বিষয়, সত্যের বিবৃতি নয়। সফ্টওয়্যারেনজেনারিং.স্ট্যাকেক্সেঞ্জারিংয়েড
অ্যাশলে মিলস

1
@ JakubTruhlář আপনি বলছেন "এটি একটি রূপ নয়, একটি বর্ণের হতে হবে" - এটি আপনার মতামত নয়, একটি সত্যকে বর্ণনা করছেন এমনটি মনে হচ্ছে। আপনি যদি লিঙ্কযুক্ত প্রশ্নের উত্তরগুলি পড়েন তবে আপনি এটি দেখতে পাবেন যে এটি আপনার কাছে, অন্য লোকেদের কাছে "অযৌক্তিক" হয়ে পড়েছে ... অগত্যা নয়।
অ্যাশলে মিলস

82

এই স্ট্রিং এক্সটেনশনটি কেবল স্ট্রাইজ স্পেস নয়, একটি স্ট্রিং থেকে সমস্ত সাদা স্থান সরিয়ে দেয় ...

 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.

4
শুধুমাত্র "" (অন্য ধরণের হোয়াইটস্পেস বিবেচনা করে না) জন্য কাজ করে
fpg1503

@ fpg1503 অন্যান্য ধরণের সাদা জায়গা?
রিকার্ডো

জেডএস বিভাগে ফাইলগুলি সংজ্ঞায়িত করা হয়েছে: fileformat.info/info/unicode/category/Zs/list.htm
fpg1503

45

সুইফট 3

স্ট্রিংয়ের সমস্ত সাধারণ স্পেসগুলি সরাতে আপনি কেবল এই পদ্ধতিটি ব্যবহার করতে পারেন (সমস্ত ধরণের সাদা জায়গা বিবেচনা করবেন না):

let myString = " Hello World ! "
let formattedString = myString.replacingOccurrences(of: " ", with: "")

ফলাফলটি হবে:

HelloWorld!

1
শুধুমাত্র "" (অন্য ধরণের হোয়াইটস্পেস বিবেচনা করে না) জন্য কাজ করে
fpg1503

: @Greg আপনি এখনও 16 অন্যান্য অক্ষরের দিতে ভুলে গেছেন fileformat.info/info/unicode/category/Zs/list.htm
fpg1503

18

আপনি রেজেেক্সও ব্যবহার করতে পারেন।

let trimmedString = myString.stringByReplacingOccurrencesOfString("\\s", withString: "", options: NSStringCompareOptions.RegularExpressionSearch, range: nil)

সুইফট 4: myString.replacingOccurrences (এর: "" \\ s ", এর সাথে:" ", বিকল্পগুলি: NSString.CompareOptions.regularExpression, পরিসীমা: শূন্য)
NorbDEV

16

সুইফট ৩.০+ এর জন্য অন্যান্য উত্তরগুলি দেখুন। এটি এখন সুইফট ২.x এর উত্তরাধিকারের উত্তর

উপরে উত্তর হিসাবে, যেহেতু আপনি প্রথম চরিত্রটি মুছে ফেলতে আগ্রহী .stringByTrimmingCharactersInSet () উদাহরণ পদ্ধতিটি দুর্দান্তভাবে কাজ করবে:

myString.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())

আপনার স্ট্রিংয়ের সীমানা ছাঁটাতে আপনি নিজের চরিত্র সেটগুলিও তৈরি করতে পারেন, প্রাক্তন:

myString.stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString: "<>"))

স্ট্রিংবায়ারপ্লেসিংঅ্যাক্সিয়েন্সসঅফস্ট্রিং (টার্গেট: স্ট্রিং, রিপ্লেসমেন্ট: স্ট্রিং) নামে সাবস্ট্রিংগুলি অপসারণ বা প্রতিস্থাপনের সাথে মোকাবিলা করার জন্য একটি বিল্ট ইন ইনস্ট্যান্স পদ্ধতি রয়েছে । এটি আপনার স্ট্রিংয়ের যে কোনও জায়গায় ফাঁকা জায়গা বা অন্য কোনও নিদর্শন সরিয়ে ফেলতে পারে

আপনি বিকল্পগুলি এবং ব্যাপ্তিগুলি নির্দিষ্ট করতে পারেন তবে এটি করার দরকার নেই:

myString.stringByReplacingOccurrencesOfString(" ", withString: "")

আপনার স্ট্রিংয়ে অক্ষরের যে কোনও পুনরাবৃত্তি প্যাটার্ন অপসারণ বা প্রতিস্থাপনের এটি একটি সহজ উপায় এবং এটি শৃঙ্খলিত করা যেতে পারে, যদিও প্রতিটি সময় এটির মাধ্যমে আপনার পুরো স্ট্রিংয়ে আরও একটি পাস নিতে হয়, দক্ষতা হ্রাস পাচ্ছে। সুতরাং আপনি এটি করতে পারেন:

 myString.stringByReplacingOccurrencesOfString(" ", withString: "").stringByReplacingOccurrencesOfString(",", withString: "")

... তবে এটি দ্বিগুণ সময় নেবে।

অ্যাপল সাইট থেকে .stringByReplacingOccurrencesOfString () ডকুমেন্টেশন

এই স্ট্রিং উদাহরণ পদ্ধতিগুলির শৃঙ্খলা কখনও কখনও অফ-অফ রূপান্তরগুলির জন্য খুব সুবিধাজনক হতে পারে, উদাহরণস্বরূপ যদি আপনি একটি লাইন ফাঁকা স্থান ছাড়াই একটি ছোট এনএসডাটা ব্লবকে হেক্স স্ট্রিংয়ে রূপান্তর করতে চান, আপনি স্ট্রিং ইন্টারপোলেশনে নির্মিত সুইফ্টের সাথে এটি করতে পারেন এবং কিছু ট্রিমিং এবং প্রতিস্থাপন:

("\(myNSDataBlob)").stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString: "<>")).stringByReplacingOccurrencesOfString(" ", withString: "")

শুধুমাত্র "" (অন্য ধরণের হোয়াইটস্পেস বিবেচনা করে না) জন্য কাজ করে
fpg1503


12

জন্য দ্রুতগতি 3.0

import Foundation

var str = " Hear me calling"

extension String {
    var stringByRemovingWhitespaces: String {
        return components(separatedBy: .whitespaces).joined()
    }
}

str.stringByRemovingWhitespaces  // Hearmecalling

8

সুইফট 4

রেজেক্স ব্যবহার করার জন্য দুর্দান্ত কেস:

" this is    wrong contained teee xt     "
    .replacingOccurrences(of: "^\\s+|\\s+|\\s+$", 
                          with: "", 
                          options: .regularExpression)

// thisiswrongcontainedteeext

7

অন্যান্য সংগ্রহগুলি কীভাবে এটি করে নমনীয় এবং নকল করতে আমি এই এক্সটেনশনটি ব্যবহার করব:

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"

শুধুমাত্র "" (অন্য ধরণের হোয়াইটস্পেস বিবেচনা করে না) জন্য কাজ করে
fpg1503

6

আপনি যদি মাঝেরটি না করে সামনের (এবং পিছন) থেকে স্পেসগুলি সরাতে চান তবে আপনার ব্যবহার করা উচিত stringByTrimmingCharactersInSet

    let dirtyString   = " First Word "
    let cleanString = dirtyString.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())

আপনি যদি স্ট্রিংয়ের যে কোনও জায়গা থেকে ফাঁকা স্থান সরিয়ে নিতে চান তবে আপনি স্ট্রিংবায়ারপ্লেসিংয়ের দিকে নজর দিতে পারেন ...


পাশাপাশি মধ্যবর্তী স্থানটি কীভাবে সরিয়ে ফেলা যায়?
নিখিল গুপ্ত

@NikhilGupta না, কেবল সামনের এবং পিছনের (উদাহরণস্বরূপ " First Word "আউটপুট "First Word")।
fpg1503

6

সুইফট 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: "")

3

আপনি এটি চেষ্টা করতে পারেন

   let updatedString = searchedText?.stringByReplacingOccurrencesOfString(" ", withString: "-")

শুধুমাত্র "" (অন্য ধরণের হোয়াইটস্পেস বিবেচনা করে না) জন্য কাজ করে
fpg1503

3

সাদা স্পেসগুলি সরিয়ে ফাংশনাল প্রোগ্রামিংয়ের চেষ্টা করুন:

extension String {
  func whiteSpacesRemoved() -> String {
    return self.filter { $0 != Character(" ") }
  }
}


3

যদি কেউ স্ট্রিং থেকে অতিরিক্ত স্থান সরিয়ে দেয় যেমন = "This is the demo text remove extra space between the words."

আপনি সুইচট 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."

3

হাই এটি দেরী হতে পারে তবে চেষ্টা করার মতো। এটি কোনও খেলার মাঠের ফাইল থেকে। আপনি এটিকে স্ট্রিং এক্সটেনশন করতে পারেন।

এটি সুইফ্ট 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       "

এটি সুইফট 5.x
কাইল ইমানুয়েল

এটা অসাধারণ! ধন্যবাদ
আরজে উয়ে

2

সুইফট 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)
        }


2

তবুও অন্য উত্তর, কখনও কখনও ইনপুট স্ট্রিং শব্দের মধ্যে একাধিক স্থান থাকতে পারে। আপনার যদি শব্দের মধ্যে মাত্র 1 স্থান থাকতে মানীকরণ করতে হয় তবে এটি চেষ্টা করুন (সুইফট 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 !"

1

আমার জন্য, নীচের লাইনটি সাদা স্থান অপসারণ করতে ব্যবহৃত হয়েছিল।

let result = String(yourString.filter {![" ", "\t", "\n"].contains($0)})


-1

ব্যাডমিন্টনকিটকের উত্তরের সুইফট 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: "")
    }
}

শুধুমাত্র "" (অন্য ধরণের হোয়াইটস্পেস বিবেচনা করে না) জন্য কাজ করে
fpg1503

কারণ আপনার উত্তরটি ভুল। আপনি যে উত্তরটির আপডেট দিয়েছেন তাও ভুল। সাদা ধরণের বিভিন্ন ধরণের রয়েছে এবং সেজন্য ব্যবহার whitespaceCharacterSetকরা একটি সেরা অনুশীলন।
fpg1503

-1
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)
    }
}

-2

স্ট্রিং থেকে সমস্ত স্পেস সরিয়ে ফেলতে:

let space_removed_string = (yourstring?.components(separatedBy: " ").joined(separator: ""))!
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.