নীচের সমস্ত উদাহরণ ব্যবহার করে
var str = "Hello, playground"
সুইফট 4
স্ট্রিংসটি সুইফট ৪-এ একটি দুর্দান্ত বড় রূপরেখা পেয়েছে যখন আপনি এখন কোনও স্ট্রিং থেকে কিছু সাবস্ট্রিং পান, আপনি একটি Substring
পরিবর্তে টাইপ ফিরে পাবেন String
। কেন? স্ট্রিংগুলি সুইফটে মান ধরণের। এর অর্থ আপনি যদি একটি নতুন স্ট্রিং ব্যবহার করতে একটি স্ট্রিং ব্যবহার করেন তবে তা অনুলিপি করতে হবে। এটি স্থায়িত্বের জন্য ভাল (আপনার জ্ঞান ছাড়া অন্য কেউ এটিকে পরিবর্তন করবে না) তবে দক্ষতার জন্য খারাপ।
অন্যদিকে, একটি সাবস্ট্রিং হ'ল মূল স্ট্রিংয়ের কাছ থেকে এটি এসেছে came এখানে ডকুমেন্টেশন থেকে একটি চিত্র এটি চিত্রিত করে।
কোনও অনুলিপি প্রয়োজন নেই তাই এটি ব্যবহার করা আরও দক্ষ। তবে, ভাবুন আপনি দশ মিলিয়ন অক্ষর স্ট্রিংয়ের দশটি চরিত্রের সাবস্ট্রিং পেয়েছেন। যেহেতু সাবস্ট্রিং স্ট্রিংকে রেফারেন্স দিচ্ছে, সাবস্ট্রিং যতক্ষণ না কাছাকাছি থাকবে ততক্ষণ সিস্টেমটিকে পুরো স্ট্রিং ধরে রাখতে হবে। সুতরাং, যখনই আপনি আপনার সাবস্ট্রিংয়ের কৌশলটি সম্পন্ন করেন, এটিকে একটি স্ট্রিংয়ে রূপান্তর করুন।
let myString = String(mySubstring)
এটি কেবল মাত্র স্ট্রিংগুলি অনুলিপি করবে এবং পুরানো স্ট্রিং ধারণকারী মেমরিটি পুনরুদ্ধার করা যায় । সাবস্ট্রিংগুলি (একটি প্রকার হিসাবে) স্বল্পজীবী হতে বোঝায়।
সুইফ্ট 4-এ আর একটি বড় উন্নতি হ'ল স্ট্রিংস হ'ল কালেকশন (আবার)। এর অর্থ হ'ল আপনি কোনও সংগ্রহে যা কিছু করতে পারেন, আপনি একটি স্ট্রিং (সাবস্ক্রিপ্টগুলি ব্যবহার করতে পারেন, অক্ষরগুলির উপর পুনরাবৃত্তি করতে চান, ফিল্টার ইত্যাদি) করতে পারেন।
নিম্নলিখিত উদাহরণগুলি কীভাবে সুইফটে সাবস্ট্রিং পাবেন তা দেখায়।
সাবস্ট্রিংগুলি প্রাপ্ত
আপনি (উদাহরণস্বরূপ, সাবস্ক্রিপ্টগুলোর বা অন্যান্য পদ্ধতির একটি সংখ্যা ব্যবহার করে একটি স্ট্রিং থেকে একটি সাবস্ট্রিং পেতে পারেন prefix
, suffix
, split
)। যদিও আপনাকে এখনও ব্যাপ্তির জন্য String.Index
কোনও Int
সূচক ব্যবহার করতে হবে না । ( আপনার যদি এর সাথে সাহায্যের দরকার হয় তবে আমার অন্য উত্তরটি দেখুন )
একটি স্ট্রিং শুরু
আপনি একটি সাবস্ক্রিপ্ট ব্যবহার করতে পারেন (সুইফট 4 একতরফা রেঞ্জ নোট করুন):
let index = str.index(str.startIndex, offsetBy: 5)
let mySubstring = str[..<index] // Hello
বা prefix
:
let index = str.index(str.startIndex, offsetBy: 5)
let mySubstring = str.prefix(upTo: index) // Hello
বা আরও সহজ:
let mySubstring = str.prefix(5) // Hello
একটি স্ট্রিং শেষ
সাবস্ক্রিপ্ট ব্যবহার:
let index = str.index(str.endIndex, offsetBy: -10)
let mySubstring = str[index...] // playground
বা suffix
:
let index = str.index(str.endIndex, offsetBy: -10)
let mySubstring = str.suffix(from: index) // playground
বা আরও সহজ:
let mySubstring = str.suffix(10) // playground
নোট করুন যে ব্যবহার করার সময় suffix(from: index)
আমাকে ব্যবহার করে শেষ থেকে পিছনে গুনতে হয়েছিল -10
। এটি ব্যবহার করার সময় প্রয়োজন হয় না suffix(x)
, যা কেবল x
একটি স্ট্রিংয়ের শেষ অক্ষর গ্রহণ করে ।
একটি স্ট্রিং মধ্যে ব্যাপ্তি
আবার আমরা কেবল এখানে সাবস্ক্রিপ্ট ব্যবহার করি।
let start = str.index(str.startIndex, offsetBy: 7)
let end = str.index(str.endIndex, offsetBy: -6)
let range = start..<end
let mySubstring = str[range] // play
রূপান্তরিত Substring
হচ্ছেString
ভুলে যাবেন না, যখন আপনি নিজের সাবস্ট্রিং সংরক্ষণ করতে প্রস্তুত হন, আপনার এটিকে এমন রূপান্তর করা উচিত String
যাতে পুরানো স্ট্রিংয়ের স্মৃতি পরিষ্কার হয়ে যায়।
let myString = String(mySubstring)
একটি Int
সূচক এক্সটেনশন ব্যবহার করছেন ?
আয়ারস্পিড বেগ এবং ওলে বেগম্যানের স্ট্রিংস সুইফট 3Int
এ আর্টিকেলটি পড়ার পরে আমি একটি ভিত্তিক সূচক এক্সটেনশনটি ব্যবহার করতে দ্বিধা বোধ করছি । যদিও সুইফট 4-এ স্ট্রিংগুলি সংগ্রহ, তবে সুইফট টিম উদ্দেশ্যমূলকভাবে সূচকগুলি ব্যবহার করে নি । এখনও আছে । এটি ইউনিকোড কোডপয়েন্টের বিভিন্ন সংখ্যক সমন্বিত সুইফট অক্ষরগুলির সাথে সম্পর্কযুক্ত। আসল সূচকটি প্রতিটি স্ট্রিংয়ের জন্য স্বতন্ত্রভাবে গণনা করতে হয়।Int
String.Index
আমার বলতে হবে, আমি আশা করি সুইফট টিম String.Index
ভবিষ্যতে বিমূর্ত করার কোনও উপায় খুঁজে পাবে । তবে তাদের অবধি আমি তাদের এপিআই ব্যবহার করতে পছন্দ করছি। এটি আমাকে স্মরণে রাখতে সহায়তা করে যে স্ট্রিং ম্যানিপুলেশনগুলি কেবল সাধারণ Int
সূচকগুলির অনুসন্ধান নয়।