একটি স্ট্রিংয়ের প্রথম অক্ষরটিতে সুইফট .uppercaseString প্রয়োগ করে


232

আমি একটি স্বত: সংশোধন সিস্টেম তৈরি করার চেষ্টা করছি এবং যখন কোনও ব্যবহারকারী একটি মূলধনী চিঠি দিয়ে একটি শব্দ টাইপ করে, তখন স্বত: সংশোধন কাজ করে না। এটি ঠিক করার জন্য, আমি স্ট্রিংয়ের একটি অনুলিপি টাইপ করা, প্রয়োগ করা হয়েছে। BlocaseString, এবং তারপরে তাদের তুলনা করেছি। যদি স্ট্রিংটি সত্যই ভুল টাইপ করে থাকে তবে এটি শব্দটি সংশোধন করবে। তবে তারপরে যে শব্দটি টাইপ করা শব্দের প্রতিস্থাপন করে তা হ'ল সমস্ত ছোট হাতের অক্ষর। সুতরাং আমার প্রথম অক্ষরটিতে .uppercaseString প্রয়োগ করা দরকার। আমি প্রাথমিকভাবে ভেবেছিলাম আমি ব্যবহার করতে পারি

nameOfString[0]

তবে এটি দৃশ্যত কাজ করে না। আমি স্ট্রিংয়ের প্রথম অক্ষরটি বড় হাতের অক্ষরে কীভাবে পেতে পারি এবং তারপরে প্রথম অক্ষরের সাথে পুরো স্ট্রিংটি মুদ্রণ করতে সক্ষম হব?

কোন সাহায্যের জন্য ধন্যবাদ!

উত্তর:


512

এপিআই নির্দেশিকাগুলির সাথে সামঞ্জস্যপূর্ণ মিউটেশন এবং নন-মিউটেশন সংস্করণ সহ।

সুইফট 3:

extension String {
    func capitalizingFirstLetter() -> String {
        let first = String(characters.prefix(1)).capitalized
        let other = String(characters.dropFirst())
        return first + other
    }

    mutating func capitalizeFirstLetter() {
        self = self.capitalizingFirstLetter()
    }
}

সুইফট 4:

extension String {
    func capitalizingFirstLetter() -> String {
      return prefix(1).uppercased() + self.lowercased().dropFirst()
    }

    mutating func capitalizeFirstLetter() {
      self = self.capitalizingFirstLetter()
    }
}

3
কেবলমাত্র একটি নোট যে .capitalizedStringএক্সকোড 7 বিটা 4 তে আর কাজ করে না St
কাকুবেই

2
@ কিরস্টাইনস: আপনি ঠিক বলেছেন, আমার খারাপ। আমি Foundation
ভেড়ািশ

3
@LoryLory ব্যবহারের .uppercaseStringযে জন্য
Kirsteins

2
এটি গুরুতর কার্যকর উত্তর সাথী .. এক্সকোড 7.1.1 / সুইফট 2.1 এর সাথে কাজ করা .... ধন্যবাদ :)
কমপ্লেশন

20
এটা ঠিক .capitalizedএখন। এছাড়াও দ্রষ্টব্যcapitalizedStringWith(_ locale:)
রাফেল

152

5.1 বা তারপরে সুইফট করুন

extension StringProtocol {
    var firstUppercased: String { prefix(1).uppercased() + dropFirst() }
    var firstCapitalized: String { prefix(1).capitalized + dropFirst() }
}

সুইফট 5

extension StringProtocol {
    var firstUppercased: String { return prefix(1).uppercased() + dropFirst() }
    var firstCapitalized: String { return prefix(1).capitalized + dropFirst() }
}

"Swift".first  // "S"
"Swift".last   // "t"
"hello world!!!".firstUppercased  // "Hello world!!!"

"DŽ".firstCapitalized   // "Dž"
"Dž".firstCapitalized   // "Dž"
"dž".firstCapitalized   // "Dž"

3
চমৎকার কাজ. আমি প্রথমে লোয়ারকেস পাস করার জন্য আমার সম্পাদনা করে পুনরায় নাম রেখেছি।
এরিকগু

আমি সুইফট ২.১.১ সমাধানটি পছন্দ করি, তবে যখন আমি আমার অ্যাপটি চালনা করি এবং ফাঁসগুলি পরীক্ষা করি, এটি এটি ফুটে উঠছে।
হেনি লি

1
আমি সবেমাত্র একটি নতুন প্রকল্প তৈরি করেছি এবং মনে হয় এটি যখন কোনও UITextFieldপর্যবেক্ষকের সাথে একসাথে ব্যবহৃত হয় তখন এটি মেমরি ফাঁস হওয়ার কারণ হয়ে থাকে UITextFieldTextDidChangeNotification
হেনি লি

@ হেনরি এর কোডের সাথে কিছু করার নেই। আপনি যদি কোনও পারফরম্যান্স / মেমরির সমস্যার সম্মুখীন হন তবে আপনার এটি অ্যাপলকে জানানো উচিত।
লিও ডাবাস

1
@ লিওডাবাস আমি অনুমান করি যে এটি কোডের উদ্দেশ্যকে আরও সুস্পষ্ট করে তুলেছে। খালি স্ট্রিং আক্ষরিক সম্ভবত সেরা।
নিকোলাস মিয়ারি

84

সুইফট 3.0

"হ্যালো ওয়ার্ল্ড" এর জন্য

nameOfString.capitalized

বা "হেল্লো ওয়ার্ল্ড" এর জন্য

nameOfString.uppercased

3
চার্লিজম ইতিমধ্যে দু'মাস আগে সুইফট 3 সংস্করণ দিয়ে উত্তর দিয়েছে ...
এরিক আয়া

11
এটি স্ট্রিংয়ের প্রতিটি শব্দের প্রথম চরিত্রকে বড় করে দেবে এবং কেবল প্রথম শব্দ নয়।
বোকাক্সিকা

রিটার্নস: স্ট্রিংয়ের একটি বড় কপি। সর্বজনীন মজাদার বড় () -> স্ট্রিং সুইফট ৩.০ বা "হেল্লো ওয়ার্ল্ড" নামঅফস্ট্রিংয়ের জন্য ইনস্টল করা হয়েছে উপরের নাম অফ স্ট্রিং.অপ্রেসেসড ()
আজহারুশাইন শায়খ

40

সুইফট 4.0

string.capitalized(with: nil)

অথবা

string.capitalized

তবে এটি প্রতিটি শব্দের প্রথম অক্ষরকে মূলধন করে

অ্যাপলের ডকুমেন্টেশন:

মূলধনযুক্ত স্ট্রিংটি প্রতিটি শব্দের প্রথম অক্ষরের সাথে সম্পর্কিত তার বড় হাতের অক্ষরে পরিবর্তিত একটি স্ট্রিং এবং বাকী সমস্ত অক্ষর তাদের সংশ্লিষ্ট ছোট হাতের মানগুলিতে সেট করে। একটি "শব্দ" হ'ল স্পেস, ট্যাব বা লাইন টার্মিনেটর দ্বারা বর্ণিত অক্ষরের কোনও ক্রম। কিছু সাধারণ শব্দ সীমানা বিরামচিহ্ন হিসাবে বিবেচনা করা হয় না, তাই এই সম্পত্তি সাধারণত মাল্টিওয়ার্ড স্ট্রিং জন্য পছন্দসই ফলাফল উত্পাদন করতে পারে না। অতিরিক্ত তথ্যের জন্য getLineStart (_: শেষ: সামগ্রীসমূহ: এবং: জন্য :) পদ্ধতিটি দেখুন।


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

1
গুরুত্বপূর্ণভাবে, "মূলধন" সমস্ত ইউনিকোড অক্ষরের জন্য সঠিক, যখন প্রথম অক্ষরের জন্য "বড়" ব্যবহার করা হয় না।
gnasher729

23
extension String {
    func firstCharacterUpperCase() -> String? {
        let lowercaseString = self.lowercaseString

        return lowercaseString.stringByReplacingCharactersInRange(lowercaseString.startIndex...lowercaseString.startIndex, withString: String(lowercaseString[lowercaseString.startIndex]).uppercaseString)
    }
}

let x = "heLLo"
let m = x.firstCharacterUpperCase()

সুইফ্ট 5 এর জন্য:

extension String {
    func firstCharacterUpperCase() -> String? {
        guard !isEmpty else { return nil }
        let lowerCasedString = self.lowercased()
        return lowerCasedString.replacingCharacters(in: lowerCasedString.startIndex...lowerCasedString.startIndex, with: String(lowerCasedString[lowerCasedString.startIndex]).uppercased())
    }
}

এটি সেরা উত্তর আইএমও - ভবিষ্যতের সমস্ত ক্ষেত্রে এটি সহজ রাখে।
রবার্ট

স্ট্রিং কিনা তা পরীক্ষা করার দরকার নেই isEmptyএবং কোনও স্ট্রিংটি প্রতিস্থাপনের জন্য আরম্ভ করতে হবে। আপনি কেবল প্রথম চরিত্রটিকে আনপ্রেট করতে পারেন এবং যদি এটি ব্যর্থ হয় তবে কেবল শূন্য হয়। এটিকে সরলীকৃত করা যেতে পারেvar firstCharacterUpperCase: String? { guard let first = first else { return nil } return lowercased().replacingCharacters(in: startIndex...startIndex, with: first.uppercased()) }
লিও ডাবাস

17

.capitalizedদ্রুত ব্যবহারের শব্দের প্রথম অক্ষরের জন্য এবং পুরো শব্দ ব্যবহারের জন্য.uppercased()


10

সুইফট ২.০ (একক লাইন):

String(nameOfString.characters.prefix(1)).uppercaseString + String(nameOfString.characters.dropFirst())

1
সম্মত। যাইহোক, এটি ধরে নিয়েছে যে মূল স্ট্রিংটি সমস্ত লোয়ার কেস। আমি .localizedLowercaseStringএটিকে এ জাতীয় স্ট্রিংগুলির সাথে কাজ করার জন্য শেষে যুক্ত করেছি : aNYsTring। String(nameOfString.characters.prefix(1)).uppercaseString + String(nameOfString.characters.dropFirst()).localizedLowercaseString
ওয়ালহি

4

সুইফট 3 (এক্সকোড 8.3.3)

স্ট্রিংয়ের সমস্ত প্রথম অক্ষরের বড় হাতের অক্ষর

let str = "your string"
let capStr = str.capitalized

//Your String

বড় অক্ষর সমস্ত অক্ষর

let str = "your string"
let upStr = str.uppercased()

//YOUR STRING

বড় বড় স্ট্রিংয়ের প্রথম অক্ষর

 var str = "your string"
 let capStr = String(str.characters.prefix(1)).uppercased() + String(str.characters.dropFirst())

//Your string

এই স্ট্রিং এর মাত্র প্রথম অক্ষরটি পুঁজিতে করা হবে না
Rool Paap

4

দ্রুত 5 এ

https://www.hackingwithswift.com/example-code/strings/how-to-capitalize-the-first-letter-of-a-string

extension String {
    func capitalizingFirstLetter() -> String {
        return prefix(1).capitalized + dropFirst()
    }

    mutating func capitalizeFirstLetter() {
        self = self.capitalizingFirstLetter()
    }
}

আপনার স্ট্রিং সঙ্গে ব্যবহার করুন

let test = "the rain in Spain"
print(test.capitalizingFirstLetter())

3

আমি প্রথম চরিত্রটি কিরস্টিনের সমাধানের সাথে নকল করে ফেলছি। এটি দ্বিগুণ না দেখে প্রথম চরিত্রকে বড় করে তুলবে:

var s: String = "hello world"
s = prefix(s, 1).capitalizedString + suffix(s, countElements(s) - 1)

এটি কম বা কম দক্ষ কিনা তা আমি জানি না, আমি কেবল জানি এটি আমাকে পছন্দসই ফলাফল দেয়।


প্রথম অক্ষরটিকে মূল চরিত্রটি পরিবর্তন করে কিনা তা আপনি পরীক্ষা করতে পারেন - নিজের ধ্রুবক হিসাবে এটি সংরক্ষণ করে নতুন 'মূলধনযুক্ত' স্ট্রিংয়ের সাথে সাম্যতার পরীক্ষা করে, এবং যদি সেগুলি একই হয় তবে আপনার ইচ্ছামত ইতিমধ্যে আপনার কাছে যা আছে তা রয়েছে।
ডেভিড এইচ 13

আপনার পোস্টটি এই উত্তরটি অনুপ্রাণিত করেছে - ধন্যবাদ !: func capitaizeFirstChar (var গুলি: স্ট্রিং) -> স্ট্রিং {যদি s.isEmpty == মিথ্যা range রেঞ্জ = s.startIndex দিন ... s.startIndex আসল = s.substringWithRange (পরিসর) আসল মূল == মূলধনী {রিটার্ন s re s.replaceRange (রেঞ্জ, সাথে: মূলধনযুক্ত)} রিটার্ন এস}
ডেভিড এইচ

1
সুইফটের নতুন সংস্করণগুলিতে, countElementsঠিক count
জর্জ পাউলোস

3

সুইফট 3 থেকে আপনি সহজেই ব্যবহার করতে পারবেন textField.autocapitalizationType = UITextAutocapitalizationType.sentences


3

সুইফট 5 এর জন্য এখানে একটি সংস্করণ যা ইউনিকোড স্কেলারার বৈশিষ্ট্যগুলি API ব্যবহার করে যদি প্রথম অক্ষরটি ইতিমধ্যে বড়হাতে থাকে তবে বা ক্ষেত্রে কোনও ধারণা না থাকলে:

extension String {
  func firstLetterUppercased() -> String {
    guard let first = first, first.isLowercase else { return self }
    return String(first).uppercased() + dropFirst()
  }
}

প্রথম অক্ষর দিয়ে স্ট্রিং আরম্ভ করার দরকার নেই। return first.uppercased() + dropFirst()বা একটি লাইনার(first?.uppercased() ?? "") + dropFirst()
লিও ডাবাস

2

স্ট্রিংয়ের প্রথম অক্ষরকে মূলধন করুন

extension String {
    var capitalizeFirst: String {
        if self.characters.count == 0 {
            return self

        return String(self[self.startIndex]).capitalized + String(self.characters.dropFirst())
    }
}

2

সুইফ্ট ৩.০ এ (এটি গ্রহণযোগ্য উত্তরের চেয়ে কিছুটা দ্রুত এবং সুরক্ষিত):

extension String {
    func firstCharacterUpperCase() -> String {
        if let firstCharacter = characters.first {
            return replacingCharacters(in: startIndex..<index(after: startIndex), with: String(firstCharacter).uppercased())
        }
        return ""
    }
}

nameOfString.capitalized কাজ করবে না , এটি বাক্যে প্রতিটি শব্দকে বড় করে দেবে


1

লিওনার্দো সেভিও ডাবাসকে ক্রেডিট:

আমি ধারণা করি বেশিরভাগ ব্যবহারের ক্ষেত্রে যথাযথ কেসিং পাওয়া যায়:

import Foundation

extension String {

    var toProper:String {
        var result = lowercaseString
        result.replaceRange(startIndex...startIndex, with: String(self[startIndex]).capitalizedString)
        return result
    }
}

1

আমার সমাধান:

func firstCharacterUppercaseString(string: String) -> String {
    var str = string as NSString
    let firstUppercaseCharacter = str.substringToIndex(1).uppercaseString
    let firstUppercaseCharacterString = str.stringByReplacingCharactersInRange(NSMakeRange(0, 1), withString: firstUppercaseCharacter)
    return firstUppercaseCharacterString
}

এই খালি খাঁটি সুইফ্ট।
অভিষেক বেদি

1

উপরের উত্তরগুলি অন্তর্ভুক্ত করে, আমি একটি ছোট এক্সটেনশন লিখেছিলাম যা প্রতিটি শব্দের প্রথম অক্ষরকে মূলধন করে তোলে (কারণ এটি আমি খুঁজছিলাম এবং অনুধাবন করেছি যে অন্য কেউ এটি ব্যবহার করতে পারে)।

আমি বিনীতভাবে জমা দিন:

extension String {
    var wordCaps:String {
        let listOfWords:[String] = self.componentsSeparatedByString(" ")
        var returnString: String = ""
        for word in listOfWords {
            if word != "" {
                var capWord = word.lowercaseString as String
                capWord.replaceRange(startIndex...startIndex, with: String(capWord[capWord.startIndex]).uppercaseString)
                returnString = returnString + capWord + " "
            }
        }
        if returnString.hasSuffix(" ") {
            returnString.removeAtIndex(returnString.endIndex.predecessor())
        }
        return returnString
    }
}

1
সুইফ্ট স্ট্রিংয়ের মূলধন স্ট্রিং নামে একটি পদ্ধতি রয়েছে। আপনি স্ট্রিং একটি অ্যারে এটি প্রয়োগ করার প্রয়োজন হলে এই উত্তরটি পরীক্ষা stackoverflow.com/a/28690655/2303865
লিও Dabus

1

সুইফট 4

func firstCharacterUpperCase() -> String {
        if self.count == 0 { return self }
        return prefix(1).uppercased() + dropFirst().lowercased()
    }

0

আমি এখানে ছোট পদক্ষেপে যেভাবে করেছি, এটি @ কিরস্টেইনের সাথে সমান।

func capitalizedPhrase(phrase:String) -> String {
    let firstCharIndex = advance(phrase.startIndex, 1)
    let firstChar = phrase.substringToIndex(firstCharIndex).uppercaseString
    let firstCharRange = phrase.startIndex..<firstCharIndex
    return phrase.stringByReplacingCharactersInRange(firstCharRange, withString: firstChar)
}

0
func helperCapitalizeFirstLetter(stringToBeCapd:String)->String{
    let capString = stringToBeCapd.substringFromIndex(stringToBeCapd.startIndex).capitalizedString
    return capString
}

এছাড়াও কেবল আপনার স্ট্রিংটি প্রবেশ করে এবং মূলধন ফিরে পান works



0

আমি এই সংস্করণটির আংশিক, যা অন্য উত্তর থেকে সাফ সংস্করণ:

extension String {
  var capitalizedFirst: String {
    let characters = self.characters
    if let first = characters.first {
      return String(first).uppercased() + 
             String(characters.dropFirst())
    }
    return self
  }
}

এটি একবারে কেবল সেলফ্যাক্যাক্টরগুলির মূল্যায়ন করে আরও দক্ষ হওয়ার চেষ্টা করে এবং তারপরে সাব-স্ট্রিংগুলি তৈরি করতে ধারাবাহিক ফর্মগুলি ব্যবহার করে।



0

আপনি যদি স্ট্রিংয়ের প্রতিটি শব্দকে মূলধন করতে চান তবে আপনি এই এক্সটেনশনটি ব্যবহার করতে পারেন

সুইফট 4 এক্সকোড 9.2

extension String {
    var wordUppercased: String {
        var aryOfWord = self.split(separator: " ")
        aryOfWord =  aryOfWord.map({String($0.first!).uppercased() + $0.dropFirst()})
        return aryOfWord.joined(separator: " ")
    }
}

ব্যবহৃত

print("simple text example".wordUppercased) //output:: "Simple Text Example"

2
সহজভাবে ব্যবহার করুন.capitalized
কাকুবেই

0

যদি আপনার স্ট্রিং সমস্ত ক্যাপ থাকে তবে নীচের পদ্ধতিটি কাজ করবে

labelTitle.text = remarks?.lowercased().firstUppercased

এই এক্সটেনশনটি আপনাকে সহায়তা করবে

extension StringProtocol {
    var firstUppercased: String {
        guard let first = first else { return "" }
        return String(first).uppercased() + dropFirst()
    }
}

1
সহজভাবে ব্যবহার করুন.capitalized
কাকুবেই

@ কাকুবেই কেন আপনি নেতিবাচক ভোট দিন। এই পদ্ধতিটি সেন্টেন্সের ক্ষেত্রে। ক্যাপিটালাইজড শব্দের প্রথম অক্ষরকে মূলধন করবে। উদাহরণ স্ট্রিং: - ( .capitalizedএটি একটি ছেলে) ফিরে আসবে (এটি একটি ছেলে) এবং এই পদ্ধতিটি ফিরে আসবে (এটি একটি ছেলে) উভয়ই আলাদা। (দয়া করে ভোট দিন বা নেতিবাচক অপসারণ করুন)
আশু

আপনি ঠিক @ আশু, আমার ক্ষমা। তবে আপনি উত্তরটি সম্পাদনা না করা পর্যন্ত আমি আপগেট করতে পারি না তাই সম্ভবত কেবল একটি ছোট সাদা স্থান সম্পাদনা করুন এবং আমি এটি আপভোট করব। আবার দুঃখিত.
কাকুবেই

প্রথম অক্ষর দিয়ে স্ট্রিং আরম্ভ করার দরকার নেই। return first.uppercased() + dropFirst()বা একটি লাইনারের ফিরে(first?.uppercased() ?? "") + dropFirst()
লিও ডাবাস

0

ভিডডিডলড () পদ্ধতিতে এই লাইনটি যুক্ত করুন।

 txtFieldName.autocapitalizationType = UITextAutocapitalizationType.words

-1
extension String {
    var lowercased:String {
        var result = Array<Character>(self.characters);
        if let first = result.first { result[0] = Character(String(first).uppercaseString) }
        return String(result)
    }
}

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