স্ট্রিং-এ সুইফটের কী ছাঁটাই পদ্ধতি রয়েছে?


392

স্ট্রিং-এ সুইফটের কী ছাঁটাই পদ্ধতি রয়েছে? উদাহরণ স্বরূপ:

let result = " abc ".trim()
// result == "abc"

4
@mattdipasquale ট্রিম এই অপারেশনের একটি খুব সাধারণ নাম
অস্টিন

উত্তর:


831

আপনি কী এর শুরু এবং শেষ থেকে সমস্ত সাদা স্থান সরিয়ে ফেলবেন তা এখানে String

(উদাহরণস্বরূপ সুইফট ২.০ সহ পরীক্ষিত )

let myString = "  \t\t  Let's trim all the whitespace  \n \t  \n  "
let trimmedString = myString.stringByTrimmingCharactersInSet(
    NSCharacterSet.whitespaceAndNewlineCharacterSet()
)
// Returns "Let's trim all the whitespace"

( উদাহরণটি সুইফট 3+ এর সাথে পরীক্ষিত )

let myString = "  \t\t  Let's trim all the whitespace  \n \t  \n  "
let trimmedString = myString.trimmingCharacters(in: .whitespacesAndNewlines)
// Returns "Let's trim all the whitespace"

আশাকরি এটা সাহায্য করবে.


স্ট্রিং থেকে এনএসএসস্ট্রিং এ কোনও স্বয়ংক্রিয় কনভেনশন না থাকায় সুইফ ১.২ এ কাজ করবে না।
এলকুকো

5
এটি সুইফট ১.২ এ সূক্ষ্মভাবে কাজ করে - স্ট্রিং অবজেক্টটির স্ট্রিংবাই ট্রাইমিংচ্যাকার্টারস্নিট পদ্ধতি রয়েছে (এটি কোনও এনএসএসটিং এক্সক্লুসিভ নয়)
বেন ডডসন

8
সুইফ্ট ৩.০ এ: ট্রিম্মডস্ট্রিং = মাই স্ট্রিং.ট্রিম্মিংচ্যাকার্টার (ইন:। হোয়াইট স্পেসস)
কিকেটাস

6
এর অর্থ এই নয় যে এটি পুরানো। প্রত্যেকে এখনও সুইফট 3.0 ব্যবহার করছে না।
সিডুনালাপ

2
সুইফট ৩.০ এ এটি স্ট্রিংয়ের মাঝে সাদা স্পেসগুলি সরিয়ে ফেলবে না। এটি কেবলমাত্র শীর্ষস্থানীয় এবং অনুসরণকারী সাদা স্থানগুলি সরিয়ে ফেলবে। : যে এই উত্তর পড়ুন stackoverflow.com/a/39067610/4886069

130

এই কোডটি আপনার প্রকল্পের একটি ফাইলের মধ্যে রাখুন, কিছু ইউটিলস.উইউফিটকে পছন্দ করে:

extension String
{   
    func trim() -> String
    {
        return self.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
    }
}

সুতরাং আপনি এটি করতে সক্ষম হবেন:

let result = " abc ".trim()
// result == "abc"

সুইফট 3.0 সমাধান

extension String
{   
    func trim() -> String
   {
    return self.trimmingCharacters(in: NSCharacterSet.whitespaces)
   }
}

সুতরাং আপনি এটি করতে সক্ষম হবেন:

let result = " Hello World ".trim()
// result = "HelloWorld"

2
এটা কি নিরাপদ? যদি অ্যাপল বা কিছু তৃতীয় পক্ষের লাইব্রেরি একই পদ্ধতিতে যুক্ত করে তবে আমি কোনও পদ্ধতির নামের সংঘর্ষকে কীভাবে আটকাব String?
ma11 শেই 28

12
এক্সটেনশানগুলি নিরাপদ - এবং আসলে অ্যাপল তাদের অভ্যন্তরীণ এপিআইগুলিতে এগুলির প্রচুর ব্যবহার করে। আপনি কোনও নামের সংঘর্ষ রোধ করতে পারবেন না এবং এটি আসলে ভাল। আপনি যখন একটি সংকলন ত্রুটি পেয়ে যাবেন যখন অ্যাপল শেষ অবধি ট্রিম () পদ্ধতি যুক্ত করে এবং আপনি জানতে পারবেন যে আপনার এক্সটেনশনটির আর প্রয়োজন নেই। এক্সটেনশানগুলি বেশ মার্জিত এবং স্ট্রিং ইউটিলেসের মতো কিছু অস্পষ্ট ইউটিলিটি ক্লাসের পরিবর্তে আপনার প্রয়োজনের পদ্ধতিগুলি রাখে - আমার যখন সমস্যা হয় তখন যখন আমার ক্লাসের কোনও পদ্ধতি না থাকে যখন আমার প্রয়োজন হয় কারণ অন্য কোনও কাঠামো আমদানি করা হয়নি যা এতে এক্সটেনশন যুক্ত করেছিল added
অ্যাবস্মিত

3
আরে, সুইফ্ট 3-এ ফিরে আসা উচিতreturn self.trimmingCharacters(in: .whitespacesAndNewlines)

7
চলুন ফলাফল = "হ্যালো ওয়ার্ল্ড"। ত্রিম () // ফলাফল = "হ্যালো ওয়ার্ল্ড" এটি স্ট্রিংয়ে থাকা শ্বেতস্পেসগুলি সরাবে না। কেবল অগ্রণী এবং পিছনের স্থানগুলি সরিয়ে ফেলবে।
সাহিল

2
এটি স্ট্রিংয়ের মধ্যে ফাঁকা স্থানগুলি সরিয়ে ফেলবে না। এটি কেবল শীর্ষস্থানীয় এবং পিছনের স্থান সরিয়ে দেয়। স্ট্রিংয়ের মধ্যে স্পেসগুলি অপসারণের আরও ভাল উপায় ট্রিমিংচ্যাকার্টার ব্যবহারের পরিবর্তে আপনার পাঠ্য?? পুনর্নির্মাণের (":" "সাথে:" ") ব্যবহার করুন
উমেশ সাওয়ান্ত

57

সুইফট ৩.০ এ

extension String
{   
    func trim() -> String
   {
    return self.trimmingCharacters(in: CharacterSet.whitespaces)
   }
}

এবং আপনি কল করতে পারেন

let result = " Hello World ".trim()  /* result = "Hello World" */

4
আমি যদি কেবল ট্রেইলিং এবং শীর্ষস্থানীয় হোয়াইটস্পেস ট্রিম করতে চাই তবে কী হবে?
সুরগাচ

1
আমি 3 এক্সটেনশন স্যুইট করতে নতুন। যদি কোনও লাইব্রেরি স্ট্রিংকে সংশোধন করে এবং আমি স্ট্রিংকেও সংশোধন করি, তবে কি সংঘর্ষগুলি পাওয়া সম্ভব? ভবিষ্যতের সংস্করণগুলি যদি দ্রুতগতিতে বিজ্ঞাপনের ছাঁটা () পদ্ধতিতে আসে? সুতরাং .. মূলত .. এক্সটেনশনগুলি কি এর মতো ব্যবহার করা নিরাপদ?
গ্যাটারস্টার

1
এটি সংঘর্ষ পেতে সম্ভব।
অ্যালেক্স ব্রাউন

চলুন ফলাফল = "হ্যালো ওয়ার্ল্ড"। ত্রিম () // ফলাফল = "হ্যালো ওয়ার্ল্ড" এটি স্ট্রিংয়ে থাকা শ্বেতস্পেসগুলি সরাবে না। কেবলমাত্র শীর্ষস্থানীয় এবং পিছনের স্থানগুলি সরিয়ে ফেলবে
সাহিল

45

সুইফট 5 এবং 4.2

let trimmedString = " abc ".trimmingCharacters(in: .whitespaces)
 //trimmedString == "abc"

21

সুইফট 3

let result = " abc ".trimmingCharacters(in: .whitespacesAndNewlines)


প্রত্যাশিত প্রকাশের তারিখ: শেষ
অবধি

1
এটি আসলে "হোয়াইটস্পেসস এবং নিউইলাইনস", হাহা, একটি 'বাম'।
রেইনকাস্ট

9

হ্যাঁ এটি আছে, আপনি এটি এটি করতে পারেন:

var str = "  this is the answer   "
str = str.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
print(srt) // "this is the answer"

ক্যারেক্টারসেটটি প্রকৃতপক্ষে সংজ্ঞায়িত সেট .WitespacesAndNewlines এর মতো পূর্ব নির্ধারিত সেটের চেয়ে অনেক বেশি নমনীয়তা সহ একটি ট্রিম নিয়ম তৈরির জন্য সত্যই শক্তিশালী একটি সরঞ্জাম।

উদাহরণ স্বরূপ:

var str = " Hello World !"
let cs = CharacterSet.init(charactersIn: " !")
str = str.trimmingCharacters(in: cs)
print(str) // "Hello World"

6

স্ট্রিং থেকে নির্দিষ্ট দৈর্ঘ্য কেটে দিন

আপনি যদি বাক্য / পাঠ্যের ব্লক প্রবেশ করিয়ে থাকেন এবং আপনি এটি পাঠ্যের বাইরে নির্দিষ্ট দৈর্ঘ্যটি সংরক্ষণ করতে চান। ক্লাসে নিম্নলিখিত এক্সটেনশন যুক্ত করুন

extension String {

   func trunc(_ length: Int) -> String {
    if self.characters.count > length {
        return self.substring(to: self.characters.index(self.startIndex, offsetBy: length))
    } else {
        return self
    }
  }

  func trim() -> String{
     return self.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
   }

}

ব্যবহার

var str = "Lorem Ipsum is simply dummy text of the printing and typesetting industry."
//str is length 74
print(str)
//O/P:  Lorem Ipsum is simply dummy text of the printing and typesetting industry.

str = str.trunc(40)
print(str)
//O/P: Lorem Ipsum is simply dummy text of the 


5

আর একটি অনুরূপ উপায়:

extension String {
    var trimmed:String {
        return self.trimmingCharacters(in: CharacterSet.whitespaces)
    }
}

ব্যবহার করুন:

let trimmedString = "myString ".trimmed

4
extension String {
    /// EZSE: Trims white space and new line characters
    public mutating func trim() {
         self = self.trimmed()
    }

    /// EZSE: Trims white space and new line characters, returns a new string
    public func trimmed() -> String {
        return self.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
    }
}

আমার এই রেপো থেকে নেওয়া: https://github.com/goktugyil/EZSwiftExtensions/commit/609fce34a41f98733f97dfd7b4c23b5d16416206


আমি পরিবর্তন না করার জন্য সুইফ্ট কমপ্লায়েন্ট ক্রিয়া-আইং পছন্দ করি।
অ্যালেক্স ব্রাউন

4

সুইফট 3 এক্সকোড 8 ফাইনালে

লক্ষ্য করুন যে এটি CharacterSet.whitespacesআর কোনও ফাংশন নয়!

(হয় না NSCharacterSet.whitespaces)

extension String {
    func trim() -> String {
        return self.trimmingCharacters(in: CharacterSet.whitespaces)
    }
}

3

// সুইফট 4.0 স্পেস এবং নতুন লাইন সরান

extension String {
    func trim() -> String {
        return self.trimmingCharacters(in: .whitespacesAndNewlines)         
    }
}

2

আপনি ছাঁটাই করতে চান এমন অক্ষরগুলিও পাঠাতে পারেন

extension String {


    func trim() -> String {

        return self.trimmingCharacters(in: .whitespacesAndNewlines)

    }

    func trim(characterSet:CharacterSet) -> String {

        return self.trimmingCharacters(in: characterSet)

    }
}

validationMessage = validationMessage.trim(characterSet: CharacterSet(charactersIn: ","))

0

আমি এই ফাংশনটি তৈরি করেছি যা একটি স্ট্রিং প্রবেশ করতে দেয় এবং কোনও অক্ষর দ্বারা ছাঁটা স্ট্রিংয়ের একটি তালিকা ফেরত দেয়

 func Trim(input:String, character:Character)-> [String]
{
    var collection:[String] = [String]()
    var index  = 0
    var copy = input
    let iterable = input
    var trim = input.startIndex.advancedBy(index)

    for i in iterable.characters

    {
        if (i == character)
        {

            trim = input.startIndex.advancedBy(index)
            // apennding to the list
            collection.append(copy.substringToIndex(trim))

            //cut the input
            index += 1
            trim = input.startIndex.advancedBy(index)
            copy = copy.substringFromIndex(trim)

            index = 0
        }
        else
        {
            index += 1
        }
    }
    collection.append(copy)
    return collection

}

যেমনটি সুইফ্টে করার কোনও উপায় খুঁজে পাওয়া যায় নি (সংকলনগুলি এবং সুইফট ২.০ তে পুরোপুরি কাজ করা)


2
উদাহরণস্বরূপ, আপনি 'ট্রিম' বলতে কী বোঝাতে চান তা নির্ধারণ করতে পারেন? যেহেতু আপনার রিটার্নের ধরণ [স্ট্রিং] আপনি ওপি যা অনুরোধ করেছেন তা বাস্তবায়ন করতে পারবেন না। (যা একটি স্ট্রিং দেয়)
অ্যালেক্স ব্রাউন

0

করতে ভুলবেন না import Foundationবা UIKit

import Foundation
let trimmedString = "   aaa  "".trimmingCharacters(in: .whitespaces)
print(trimmedString)

ফলাফল:

"aaa"

অন্যথায় আপনি পাবেন:

error: value of type 'String' has no member 'trimmingCharacters'
    return self.trimmingCharacters(in: .whitespaces)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.