কীভাবে স্ট্রিং সুইফটে (প্রত্যয়) দিয়ে শুরু হয় বা (প্রত্যয়) দিয়ে শেষ হয় তা কীভাবে পরীক্ষা করবেন


102

আমি একটি সুইফ্ট স্ট্রিং নির্দিষ্ট মান দিয়ে শুরু হয় বা শেষ হয় কিনা তা পরীক্ষা করার চেষ্টা করছি। এই পদ্ধতিগুলির অস্তিত্ব নেই:

var str = "Hello, playground"
str.startsWith("Hello") // error
str.endsWith("ground") // error

আমি উপসর্গ এবং প্রত্যয় স্ট্রিং পেতে চাই। আমি এখানে একটি সাবস্ট্রিং খুঁজে পেতে পারি, যেমন এখানে এবং এখানে উত্তর দেওয়া আছে , তবে স্যুইফ্টের মধ্যে ব্যাপ্তিগুলি এমন একটি বেদনা।

এটি করার কি আরও সহজ উপায় আছে?

(আমি যখন ডকুমেন্টেশনটি পড়ছিলাম তখন আমি উত্তরে হোঁচট খেয়েছি এবং যেহেতু আমার অনুসন্ধানের পদগুলির জন্য কোনও এসও উত্তর আসে নি, আমি এখানে আমার প্রশ্নোত্তর যুক্ত করছি))

উত্তর:


204

সুইফট 4-র জন্য আপডেট হয়েছে

একটি স্ট্রিং কী দিয়ে শুরু হয় এবং শেষ হয় তা দিয়ে পরীক্ষা করা হচ্ছে

আপনি অন্য স্ট্রিংয়ের সাথে সাম্যতা পরীক্ষা করার জন্য hasPrefix(_:)এবং hasSuffix(_:)পদ্ধতিগুলি ব্যবহার করতে পারেন ।

let str = "Hello, playground"

if str.hasPrefix("Hello") { // true
    print("Prefix exists")
}

if str.hasSuffix("ground") { // true
    print("Suffix exists")
}

প্রকৃত উপসর্গ এবং প্রত্যয় সাবস্ট্রিংগুলি প্রাপ্ত করা

প্রকৃত উপসর্গ বা প্রত্যয় সাবস্ট্রিং পেতে, আপনি নিম্নলিখিত পদ্ধতির একটি ব্যবহার করতে পারেন। আমি এর সরলতার জন্য প্রথম পদ্ধতির প্রস্তাব দিই। সমস্ত পদ্ধতি strহিসাবে ব্যবহার

let str = "Hello, playground"

পদ্ধতি 1: (প্রস্তাবিত) prefix(Int)এবংsuffix(Int)

let prefix = String(str.prefix(5)) // Hello
let suffix = String(str.suffix(6)) // ground

এটি আমার মতে আরও ভাল পদ্ধতি। নীচে 2 এবং 3 পদ্ধতিগুলির বিপরীতে, সূচকগুলি সীমা ছাড়িয়ে গেলে এই পদ্ধতিটি ক্রাশ হবে না। এটি কেবল স্ট্রিংয়ের সমস্ত অক্ষরকে ফিরিয়ে দেবে।

let prefix = String(str.prefix(225)) // Hello, playground
let suffix = String(str.suffix(623)) // Hello, playground

অবশ্যই, কখনও কখনও ক্র্যাশগুলি ভাল হয় কারণ তারা আপনাকে জানিয়ে দেয় যে আপনার কোডে কোনও সমস্যা আছে। সুতরাং নীচের দ্বিতীয় পদ্ধতিটিও বিবেচনা করুন। সূচক সীমা ছাড়িয়ে গেলে এটি একটি ত্রুটি ফেলবে।

পদ্ধতি 2: prefix(upto:)এবংsuffix(from:)

সুইফ্ট স্ট্রিং সূচিপত্রগুলি জটিল কারণ তাদের বিশেষ অক্ষরগুলি (ইমোজি এর মতো) বিবেচনায় নিতে হবে। তবে একবার সূচক পেলে উপসর্গ বা প্রত্যয় পাওয়া সহজ। (দেখুন আমার অন্যান্য জবাব উপর String.Index।)

let prefixIndex = str.index(str.startIndex, offsetBy: 5)
let prefix = String(str.prefix(upTo: prefixIndex)) // Hello

let suffixIndex = str.index(str.endIndex, offsetBy: -6)
let suffix = String(str.suffix(from: suffixIndex)) // ground

আপনি যদি সীমা ছাড়িয়ে যাওয়ার বিরুদ্ধে রক্ষা করতে চান, আপনি limitedBy(আবার, এই উত্তরটি দেখুন ) ব্যবহার করে একটি সূচি তৈরি করতে পারেন ।

পদ্ধতি 3: সাবস্ক্রিপ্ট

যেহেতু স্ট্রিং একটি সংগ্রহ, আপনি উপসর্গ এবং প্রত্যয় পেতে সাবস্ক্রিপ্টগুলি ব্যবহার করতে পারেন।

let prefixIndex = str.index(str.startIndex, offsetBy: 5)
let prefix = String(str[..<prefixIndex]) // Hello

let suffixIndex = str.index(str.endIndex, offsetBy: -6)
let suffix = String(str[suffixIndex...]) // ground

আরও পড়া


5

উপসর্গ এবং প্রত্যয় সমতা

কোনও স্ট্রিংয়ের একটি নির্দিষ্ট স্ট্রিং উপসর্গ বা প্রত্যয় রয়েছে কিনা তা পরীক্ষা করতে স্ট্রিংয়ের hasPrefix ( :) এবং hasSuffix ( :) পদ্ধতিগুলিতে কল করুন, উভয়ই স্ট্রিংয়ের একক যুক্তি গ্রহণ করে এবং বুলিয়ান মান প্রদান করে।

অ্যাপল ডক

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.