সতর্কতা: 'অক্ষর' হ্রাস করা হয়েছে: সরাসরি স্ট্রিং বা সাবস্ট্রিং ব্যবহার করুন


162

অক্ষর - স্ট্রিংয়ের একটি উদাহরণ সম্পত্তি, এক্সকোড 9.1 এর সাথে অবচিত

charactersসম্পত্তিটি ব্যবহার করে স্ট্রিংয়ের মাধ্যমে একটি স্ট্রিং পেতে এটি খুব দরকারী ছিল তবে এখন এটি হ্রাস পেয়েছে এবং এক্সকোড ব্যবহার করার পরামর্শ দেয় substring। আমি প্রায় এসও প্রশ্ন এবং এটির জন্য অ্যাপল বিকাশকারী টিউটোরিয়াল / গাইডলাইন পরীক্ষা করার চেষ্টা করেছি। তবে প্রস্তাবিত কোনও সমাধান / বিকল্প দেখতে পেল না।

এখানে সতর্কতা বার্তা:

'অক্ষর' হ্রাস করা হয়েছে: দয়া করে স্ট্রিং বা সাবস্ট্রিং ব্যবহার করুন

এখানে চিত্র বর্ণনা লিখুন

আমি সম্পত্তি ব্যবহার করে অনেক স্ট্রিং অপারেশন সম্পাদন / পরিচালনা করেছি characters

এই আপডেট সম্পর্কে কারও কোন ধারণা / তথ্য আছে?


5
এখানে সুইফট 3 থেকে 4 থেকে পরিবর্তনগুলি সম্পর্কে একটি আকর্ষণীয় নিবন্ধ রয়েছেString এবং দয়া করে SE0163
ভাদিয়ান

5
countপরিবর্তে ব্যবহার করার চেষ্টা করুন ।
হোলএক্স

1
আপনি যদি string.characters.forEachনতুন এপিআই ব্যবহার করে থাকেন তবেstring.forEach { char in process(char) }
এফ্রেন

উত্তর:


270

সুইফট 4 স্ট্রিং এপিআই এ পরিবর্তনগুলি প্রবর্তন করেছে।
আপনি কেবল !stringValue.isEmptyপরিবর্তে ব্যবহার করতে পারেনstringValue.characters.count > 0

আরও তথ্যের জন্য আপনার কাছ থেকে নমুনা পেতে এখানে

যেমন

let edit = "Summary"
edit.count   // 7

আপনার উত্তরের জন্য ধন্যবাদ .. তবে আমি কি সাব স্ট্রিংয়ের বিশদ রেফারেন্স পেতে পারি? এটি কেবলমাত্র নমুনার উদাহরণ, আমি চরিত্রগুলি নিয়ে কাজ করে এমন অনেকগুলি অপারেশন করেছি
ক্রুনাল

1
এখানে থেকে বিস্তারিত তথ্য চেক করুন। বিকাশকারী.এপ্লে.লাইবারি
কনটেন্ট

অভিবাদন দিন = "হ্যালো, বিশ্ব!" চলুন সূচক = ग्रीटिंगিং.ইন্ডেক্স (এর: ",") ??
ग्रीटिंग.এন্ডইন্ডেক্স

1
সাবস্ট্রিংয়ের জন্য অনলাইন রেফারেন্স ।
ডেনিস ভেনিঙ্ক

32
কোনও সংগ্রহ ফাঁকা আছে কিনা তা পরীক্ষা করতে কখনই গণনা> 0 ব্যবহার করবেন না। সংগ্রহের জন্য একটি সম্পত্তি রয়েছে ঠিক এটির জন্যই আইপ্পটি বলে। দস্তাবেজগুলি থেকে যখন আপনার সংগ্রহটি খালি আছে কিনা তা পরীক্ষা করার দরকার পরে, গণনা সম্পত্তি শূন্যের সমান কিনা তা পরীক্ষা না করে isEmpty সম্পত্তি ব্যবহার করুন। সংগ্রহগুলির জন্য যা র‌্যান্ডমএকসেসকোলকশন অনুসারে নয়, সংগ্রহের উপাদানগুলির মাধ্যমে গণনা সম্পত্তি পুনরাবৃত্তি করে।
লিও ডাবাস

82

সুইফট 4 বনাম সুইফট 3 উদাহরণ:

let myString = "test"

for char in myString.characters {print(char) } // Swift 3
for char in myString { print(char) } // Swift 4

let length = myString.characters.count // Swift 3
let length = myString.count // Swift 4

2
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। প্রশ্নটি স্ট্রিং.ক্রেটারস.কমের পরিবর্তনের বিষয়ে, শূন্যের সাথে তুলনা করার জন্য প্রতিস্থাপন নয়; এটি কেবলমাত্র স্ক্রিনশটে উল্লেখ করা হয়েছে।
টিমোথি কানস্কি

9

স্ট্রিংগুলি ম্যানিপুলেট করার জন্য সবচেয়ে সাধারণ ক্ষেত্রে একটি হ'ল জেএসওএন প্রতিক্রিয়া। এই উদাহরণে আমি আমার ঘড়ির অ্যাপ্লিকেশনটিতে একটি বিটকয়েন জেএসওএন অবজেক্টের সর্বশেষ (এন) অক্ষরগুলি ফেলে দিতে একটি এক্সটেনশন তৈরি করেছি।

সুইফট 3:

func dropLast(_ n: Int = 0) -> String {
    return String(characters.dropLast(n))

এক্সকোড 9.1 ত্রুটি বার্তা:

'অক্ষর' হ্রাস করা হয়েছে: সরাসরি স্ট্রিং বা সাবস্ট্রিং ব্যবহার করুন

এক্সকোড আমাদের স্ট্রিং ভেরিয়েবল বা পদ্ধতিটি সরাসরি ব্যবহার করতে বলছে ।

সুইফট 4:

func dropLast(_ n: Int = 0) -> String {
    return String(dropLast(n))
    }

সম্পূর্ণ এক্সটেনশন:

extension String {
    func dropLast(_ n: Int = 0) -> String {
        return String(dropLast(n))
    }

    var dropLast: String {
        return dropLast()
    }
}

কল করুন:

print("rate:\(response.USDRate)")
let literalMarketPrice = response.USDRate.dropLast(2)
print("literal market price: \(literalMarketPrice)")

কনসোল:

//rate:7,101.0888 //JSON float
//literal market price: 7,101.08 // JSON string literal

অতিরিক্ত উদাহরণ:

  • print("Spell has \(invisibleSpellName.count) characters.")
  • return String(dropLast(n))
  • return String(removeLast(n))

ডকুমেন্টেশন:

আপনি প্রায়ই যেমন সাধারণ পদ্ধতি ব্যবহার করে করা হবে dropLast()বা removeLast()বা countতাই এখানে প্রতিটি পদ্ধতির জন্য স্পষ্ট অ্যাপল ডকুমেন্টেশন।

droplast ()

removelast ()

অক্ষর গণনা


2

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

এটি এই সম্পর্কে একটি দুর্দান্ত পঠন: https://useyourloaf.com/blog/updating-strings-for-swift-4/


2

এটি ব্যবহার করুন charactersকারণ Stringসুইফট ২.০ এ সংগ্রহ হওয়া বন্ধ হয়ে গেছে। তবে এই এখনও সুইফট 4 বৈধ কোড কিন্তু এখন আর প্রয়োজনীয় এখন যে Stringএকটি Collectionআবার।

উদাহরণস্বরূপ একটি সুইফট 4-এ Stringএখন একটি সরাসরি গণনা সম্পত্তি রয়েছে যা অক্ষরটিকে গণনা দেয়:

// Swift 4
let spString = "Stack"
spString.count           // 5

স্ট্রিং এবং সাবস্ট্রিংয়ের উদাহরণ।

দড়ি

সুইফট 4 Stringএখন সরাসরি এলিমেন্ট পান যা স্ট্রিংয়ের প্রথম চরিত্র দেয়:(string.characters.first)

let spString = "Stack"
let firstElement = spString.first   //S

সাবস্ট্রিং

সাবস্ট্রিং ব্যবহার করে প্রথম অক্ষর পান।

let spstring = "Welcome"
let indexStartOfText = spstring.index(spstring.startIndex, offsetBy: 1)
let sub = spstring.substring(to: indexStartOfText)
print(sub) //W

আমি স্ট্রিংয়ের প্রথম চরিত্রটি পেতে চাই তাই আমি জানতে চাই যে কোন উপায়টি ব্যবহার করা উচিত লেট এলেমেন্ট = স্পস্ট্রিং.ফার্স্ট বা সাবস্ট্রিং?
পুলকিট

1
@ পুলকিট ব্যবহার করা আরও ভাল .firstকারণ যদি স্ট্রিংটি ""খালি থাকে। এটি কেবল শূন্যই ফিরে আসবে তবে substringত্রুটি ঘটবে।
প্রণভান এসপি

কিভাবে দ্রুত কোড এই লাইন রূপান্তর করতে 4 'AuthorImageText = STRING (val.characters [(AuthorName.startIndex)]) মূলধন।'
Pulkit

@Pulkit শুধু অপসারণ .charactersযথেষ্ট
Pranavan অধিকৃত

0

আপনি অভিধানটি গ্রুপিংয়ের জন্য এই কোডটি {.c 0.characters.first ব্যবহার না করেও ব্যবহার করতে পারেন! }।

let cities = ["Shanghai": 24_256_800, "Karachi": 23_500_000, "Beijing": 21_516_000, "Seoul": 9_995_000]
let groupedCities = Dictionary(grouping: cities.keys) { $0.first! }
print(groupedCities)

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