একটি স্ট্রিং আপার ক্ষেত্রে প্রথম অক্ষর তৈরি করুন (সর্বাধিক পারফরম্যান্স সহ)


448

আমার DetailsViewসাথে একটি আছে TextBox এবং আমি চাই ইনপুট ডেটা সর্বদা রাজধানীর প্রথম লেটারের সাহায্যে সংরক্ষণ করা উচিত ।

উদাহরণ:

"red" --> "Red"
"red house" --> " Red house"

আমি কীভাবে এই সর্বাধিক কর্মক্ষমতা অর্জন করতে পারি ?


দ্রষ্টব্য :
উত্তরের উত্তর এবং মন্তব্যের ভিত্তিতে, অনেক লোক মনে করে এটি স্ট্রিংয়ের সমস্ত শব্দকে মূলধন সম্পর্কে জিজ্ঞাসা করছে । যেমন => Red House এটা হয় না, কিন্তু যে আপনি যদি কি চাইতে হয় , উত্তরগুলি ব্যবহার সম্পর্কে এক জন্য পর্যবেক্ষণ TextInfoএর ToTitleCaseপদ্ধতি। (উল্লেখ্য: ঐ উত্তর ভুল । প্রশ্নের জন্য আসলে জিজ্ঞাসা)
দেখুন TextInfo.ToTitleCase ডক আদেশ সহকারে জন্য (স্পর্শ করে না সব ক্যাপ শব্দ - তারা বিবেচিত আদ্যক্ষরসমস্টি হয়; শব্দ খঁুজতে যেটি 'করা উচিত নয় "হতে মাঝখানে অক্ষর ছোট হাতের অক্ষরে পারে নামিয়েছে, যেমন "ম্যাকডোনাল্ড" => "ম্যাকডোনাল্ড"; সমস্ত সংস্কৃতি-নির্দিষ্ট সূক্ষ্মতা পুনরায় মূলধনের বিধি হ্যান্ডেল করার গ্যারান্টিযুক্ত নয়))


উল্লেখ্য :
প্রশ্ন হল দ্ব্যর্থক করা হবে কিনা তা প্রথম পর চিঠি দিতে হবে যেমন বাধ্য করার ক্ষেত্রে কম । গৃহীত উত্তরটি ধরে নিয়েছে যে কেবলমাত্র প্রথম অক্ষরটি পরিবর্তন করা উচিত । আপনি যদি প্রথম অক্ষরটিকে বাদ দিয়ে স্ট্রিংয়ের সমস্ত অক্ষরকে জোর করতে চান তবে একটি উত্তর রয়েছে ToLowerএবং সন্ধান করুন অক্ষরটিকে টুটিটেলকেসযুক্ত না থাকা টুটিটেলকেস না থাকা সন্ধান করুন


7
@ ববি: এটি কোনও সদৃশ নয়: ওপি একটি স্ট্রিংয়ের প্রথম অক্ষরকে মূলধন করতে বলে, লিঙ্কে প্রশ্নটি প্রতিটি শব্দের প্রথম অক্ষরকে মূলধন করে।
জিভিএস

1
@ জিভিএস: প্রথম উত্তরটি খুব বিশদ এবং প্রথম কোড-ব্লক হ'ল তিনি যা খুঁজছেন তা ঠিক । এছাড়াও, প্রতিটি শব্দের মূলধন এবং কেবল প্রথম শব্দের মধ্যে কেবল একটি লুপ পার্থক্য difference
ববি

আপনি কি কখনও সফলতার সাথে সমাধান করেছেন? এই বিষয়ে আপনার কি এখনও সহায়তা দরকার?
jcolebrand

1
তবে আপনি বলেছিলেন, এবং আমি উদ্ধৃতি দিয়েছি, "প্রতিটি ওয়ার্ডের উপরের অক্ষরের প্রথম অক্ষর তৈরি করুন"। সুতরাং, "লাল বাড়ি" -> "রেড হাউস" কেন? "বাড়ি" এর "এইচ" কেন মূলধন নয়?
গিলারমো গুটিরিজ

একটি উত্তর যুক্ত করা হয়েছে কারণ বেশিরভাগ উত্তর ব্যর্থ হবে যদি আপনার শুরুতে একটি সাদা জায়গা থাকে। প্রতিটি উত্তরে এটি পোস্ট করা এড়াতে, আমি এটি এখানে একবার পোস্ট করব।
Noctis

উত্তর:


583

সি # 8 এ আপডেট হয়েছে

public static class StringExtensions
{
    public static string FirstCharToUpper(this string input) =>
        input switch
        {
            null => throw new ArgumentNullException(nameof(input)),
            "" => throw new ArgumentException($"{nameof(input)} cannot be empty", nameof(input)),
            _ => input.First().ToString().ToUpper() + input.Substring(1)
        };
}

সি # 7

public static class StringExtensions
{
    public static string FirstCharToUpper(this string input)
    {
        switch (input)
        {
            case null: throw new ArgumentNullException(nameof(input));
            case "": throw new ArgumentException($"{nameof(input)} cannot be empty", nameof(input));
            default: return input.First().ToString().ToUpper() + input.Substring(1);
        }
    }
}

সত্যিই পুরানো উত্তর

public static string FirstCharToUpper(string input)
{
    if (String.IsNullOrEmpty(input))
        throw new ArgumentException("ARGH!");
    return input.First().ToString().ToUpper() + String.Join("", input.Skip(1));
}

সম্পাদনা : এই সংস্করণটি ছোট। দ্রুত সমাধানের জন্য ইক্যুইসোর উত্তরটি একবার দেখুন

public static string FirstCharToUpper(string input)
{
    if (String.IsNullOrEmpty(input))
        throw new ArgumentException("ARGH!");
    return input.First().ToString().ToUpper() + input.Substring(1);
}

সম্পাদনা 2 : সম্ভবত দ্রুততম সমাধানটি ড্যারেনের (এমনকি একটি মানদণ্ডও রয়েছে) যদিও এটির ব্যর্থতা string.IsNullOrEmpty(s)ছড়িয়ে দেওয়ার জন্য মূল প্রয়োজনটি প্রথম অক্ষরের উপস্থিতি প্রত্যাশা করে যেহেতু আমি এটির ব্যতিক্রমতা ছুঁড়ে ফেলার জন্য বৈধতা পরিবর্তন করব । নোট করুন যে এই কোডটি জেনেরিক স্ট্রিংয়ের জন্য কাজ করে বিশেষত এর থেকে বৈধ মানগুলিতে নয় Textbox


2
কারণ প্রথম প্যারামিটারটি String.Joinহল পৃথককারী যার সাথে দ্বিতীয় প্যারামিটারের সাথে দেওয়া স্ট্রিংগুলিতে যোগ দিতে।
ডায়ালেক্টিকাস

27
আমি আপনার উত্তরটি সত্যিই পছন্দ করি তবে আপনি var arr = input.ToCharArray(); arr[0] = Char.ToUpperInvariant(arr[0]); return new String(arr);সম্ভবত কিছুটা অপরিবর্তনীয় বস্তু তৈরি করছেন (এবং বিশেষত আপনি এড়িয়ে যাচ্ছেন String.Join) সম্ভবত কিছুটা গতি অর্জন করব । এটি অবশ্যই স্ট্রিংয়ের দৈর্ঘ্যের উপর নির্ভর করে।
ফ্লিন্ডবার্গ

3
দুর্দান্ত - লিনক ব্যবহার করা এই কোডটি কী করে তা খুব স্পষ্ট করে তোলে।
ড্যানিয়েল জেমস ব্রায়ার্স 27'13

7
হুমম ... প্রযুক্তিগতভাবে, "Argh!"এটি আপার কেস প্রথম পত্রের নিয়মের সাথে ফিরে আসতে হবে । ;)
jp2code

2
@ jp2code যেহেতু শূন্য বা খালি স্ট্রিংয়ের অস্তিত্বহীন প্রথম অক্ষরকে মূলধন করা গর্ভবতী ডলফিংয়ের দ্বারা চড় মারার মতো, তারপরে সমস্ত ক্যাপস আর্গ! সঠিক বানান। urband অভিধান.com
কার্লোস Muñoz

319
public string FirstLetterToUpper(string str)
{
    if (str == null)
        return null;

    if (str.Length > 1)
        return char.ToUpper(str[0]) + str.Substring(1);

    return str.ToUpper();
}

পুরানো উত্তর: এটি প্রতিটি প্রথম অক্ষরকে বড় হাতের অক্ষরে তোলে

public string ToTitleCase(string str)
{
    return CultureInfo.CurrentCulture.TextInfo.ToTitleCase(str.ToLower());
}

তবে এটি কোনও শব্দের প্রতিটি প্রথম অক্ষরকে বড় হাতের সাথে রূপান্তর করে, কেবল একটি স্ট্রিংয়ের প্রথম অক্ষরকেই নয়।
জিভিএস

@ জিভিএস, এটাই আপনাকে প্রশ্ন করতে বলেছে।
Thattolleyguy

17
তিনি "রেড হাউস" => "রেড হাউস" জিজ্ঞাসা করেছেন। টিটিটেল আপনাকে "রেড হাউস" দেবে।
জিভিএস

1
আমার জন্য সহায়ক। দুর্দান্ত
এহসান সাজ্জাদ

1
এটি সম্পর্কে নিশ্চিত না তবে চর + স্ট্রিংয়ের ফলে বক্সিং হয়। সর্বাধিক ক্ষেত্রে সর্বোচ্চ পারফরম্যান্স প্রয়োজন।
নওফাল

164

সঠিক উপায় হ'ল সংস্কৃতি ব্যবহার করা:

System.Globalization.CultureInfo.CurrentCulture.TextInfo.ToTitleCase(word.ToLower())

দ্রষ্টব্য: এটি প্রতিটি শব্দের একটি স্ট্রিংয়ের মধ্যে বড় করে দেবে, যেমন "রেড হাউস" -> "রেড হাউস"। সমাধানটি শব্দের মধ্যে ছোট আকারের মূলধনকেও যেমন, "ওল্ড ম্যাকডোনাল্ড" -> "ওল্ড ম্যাকডোনাল্ড" will


4
চাকাটি পুনরায় উদ্ভাবন করার চেয়ে এটি করার সবচেয়ে উপযুক্ত উপায় এবং এটির নিজস্ব সংস্করণ লেখার চেষ্টা করুন।
আলেক্সি শেভলিভ

12
এটির সাথে আমার যে সমস্যাটি রয়েছে তা হ'ল এটি মাঝারি স্ট্রিংযুক্ত সম্ভাব্য বৈধ মূলধনপত্র মুছবে। উদাহরণস্বরূপ ম্যাকনামস
জেকমস

29
"লাল ঘর" "রেড হাউস" হয়ে ওঠার কারণে এটি একটি ভুল উত্তর ("এইচ" লক্ষ্য করুন)!
স্পার্ক

21
প্রশ্নটি জিজ্ঞাসা করার ছয় বছর পরে, দয়া করে বিদ্যমান উত্তর এবং তাদের মন্তব্যগুলি পড়ার জন্য আরও পুঙ্খানুপুঙ্খ কাজ করুন । আপনি কি নিশ্চিত আপনি একটি ভাল সমাধান থাকে, তখন দেন যা একটি উপায় আপনি কি মনে করেন আপনার উত্তর আচরণ করবে শ্রেয় পরিস্থিতিতে, এবং বিশেষভাবে কিভাবে বিদ্যমান উত্তর থেকে যে আলাদা। 1) ইক্যিসো ইতিমধ্যে তার উত্তর দ্বিতীয়ার্ধে এই বিকল্পটি কভার করেছে। 2) অনেক পরিস্থিতিতে ToLowerএটি একটি ভুল, কারণ এটি শব্দের মাঝখানে মূলধনকে মুছে দেয়, যেমন "ম্যাকডোনাল্ডস"। 3) প্রশ্ন সম্পর্কে স্ট্রিং এর মাত্র প্রথম শব্দ পরিবর্তন , না TitleCase সম্পর্কে।
টুলমেকারস্টেভ

10
এটি ইনপুটটিকে "শিরোনামের কেসে" রূপান্তরিত করে - তাই এটি "লাল ঘোড়া "টিকে" রেড হর্স "রূপান্তরিত করে - যখন ব্যক্তি স্পষ্টভাবে জিজ্ঞাসা করেছিল যে এটি করা উচিত নয় (এবং" লাল ঘোড়া "ফেরত দেওয়া উচিত)। এটি সঠিক উপায় নয়।
হেকারিক

68

আমি http://www.dotnetperls.com/uppercase-first-letter থেকে দ্রুততম পদ্ধতি গ্রহণ করেছি এবং এক্সটেনশন পদ্ধতিতে রূপান্তর করেছি:

    /// <summary>
    /// Returns the input string with the first character converted to uppercase, or mutates any nulls passed into string.Empty
    /// </summary>
    public static string FirstLetterToUpperCaseOrConvertNullToEmptyString(this string s)
    {
        if (string.IsNullOrEmpty(s))
            return string.Empty;

        char[] a = s.ToCharArray();
        a[0] = char.ToUpper(a[0]);
        return new string(a);
    }

দ্রষ্টব্য: ব্যবহারের কারণটি ToCharArrayবিকল্পের চেয়ে দ্রুততর কারণ char.ToUpper(s[0]) + s.Substring(1), কেবলমাত্র একটি স্ট্রিং বরাদ্দ করা হয়েছে, যেখানে Substringঅ্যাপ্রোচটি স্ট্রিংয়ের জন্য একটি স্ট্রিং বরাদ্দ করে, তারপরে চূড়ান্ত ফলাফলটি রচনার জন্য একটি দ্বিতীয় স্ট্রিং।


সম্পাদনা : কার্লোস মিউজোজ গৃহীত উত্তর থেকে প্রাথমিক পরীক্ষার সাথে মিলিয়ে এই পদ্ধতির মতো দেখতে এখানে দেওয়া হয়েছে :

    /// <summary>
    /// Returns the input string with the first character converted to uppercase
    /// </summary>
    public static string FirstLetterToUpperCase(this string s)
    {
        if (string.IsNullOrEmpty(s))
            throw new ArgumentException("There is no first letter");

        char[] a = s.ToCharArray();
        a[0] = char.ToUpper(a[0]);
        return new string(a);
    }

বাহ, একটি উন্নত-পারফরম্যান্স সমাধান দেখানোর জন্য পারফরম্যান্স মেট্রিকগুলি অনুসন্ধানের জন্য ধন্যবাদ!
টুলমেকারস্টেভ

@ টুলমেকারস্টেভ, আমি এই সমাধানটি পছন্দ করি কারণ এটি অন্যদের তুলনায় প্রকৃতপক্ষে দ্রুত বলে মনে হয় তবে এতে কিছুটা সমস্যা আছে। যদি আপনি নাল পাস করেন তবে আউটপুট হিসাবে খালি স্ট্রিংটি পাওয়া উচিত নয়। আসলে আমি যুক্তি দিয়ে বলব যে খালি স্ট্রিং পাস করাও ব্যতিক্রম হওয়া উচিত, যেহেতু ওপি প্রথম চিঠিটি চেয়েছে । এছাড়াও, আপনি অন্যদের সম্পাদনার আগে তাদের উত্তর সম্পর্কে মন্তব্য করতে পারেন।
কার্লোস মুউজ

@ কার্লোস মিউওজ - অন্যান্য ব্যক্তির জবাবকে "উন্নত" করবে কিনা তা মেটাতে আলোচনা করা হয়েছে। Conকমত্যটি ছিল "যদি আপনি কোনও উত্তর উন্নতি করতে পারেন, তবে তা করুন - উত্তরটির মালিক 'কেউ নেই', এমনকি মূল লেখকও নয় - লক্ষ্যটি হ'ল সর্বোত্তম উত্তর পাওয়া '" আপনি অবশ্যই সম্পাদনা সম্পাদনা বা রোলব্যাক মুক্ত। যে ক্ষেত্রে, সাধারণ সৌজন্যে মূল লেখকের সংস্করণটি চূড়ান্ত ফলাফল হতে দেয় এবং আমি মন্তব্য করার জন্য নিষ্পত্তি করব। সাধারণত আমি এছাড়াও একটি মন্তব্য পরিবর্তন আমি তৈরি করছি রাখা; আমি না চাইলে ক্ষমা চাইছি।
টুলমেকারস্টেভ

@ কার্লোস মিউজোজ - বিশেষত, এসও তে অনেকগুলি, অনেক উত্তর রয়েছে, যা সক্রিয়ভাবে রক্ষণাবেক্ষণ করা হয় না। যদি কোনও পরিবর্তন কোনও উত্তরকে উন্নত করতে পারে, তবে কেন এটি একটি মন্তব্যে দাফন করবেন? লেখক যদি সক্রিয়ভাবে তাদের উত্তরগুলি পর্যবেক্ষণ করে থাকেন তবে তারা যথাযথ দেখতে দেখতে পরিবর্তনটি করবেন। যদি সেগুলি না হয় তবে উত্তরটি উন্নত করা হয়েছে, সবার উপকারে। এই নীতিটি বিশেষত সত্য, যেমন পুরানো প্রশ্নোত্তরের জন্য, যেমন এটি।
টুলমেকারস্টেভ

বিটিডাব্লু, আমি পদ্ধতিটির শুরুতে @ কার্লোস মুইউজের সাথে একমত হয়েছি - তার পরীক্ষার সংস্করণটি আরও ভাল প্রোগ্রামিং শৈলী - return string.Emptyএখানে পদ্ধতিটিতে একটি "খারাপ" কলটি লুকিয়ে রাখবে।
টুলমেকারস্টেভ

46

আপনি "ToTitleCase পদ্ধতি" ব্যবহার করতে পারেন

string s = new CultureInfo("en-US").TextInfo.ToTitleCase("red house");
//result : Red House

এই এক্সটেনশন পদ্ধতিটি প্রতিটি শিরোনামের সমস্যা সমাধান করে।

ব্যবহার সহজ

string str = "red house";
str.ToTitleCase();
//result : Red house

string str = "red house";
str.ToTitleCase(TitleCase.All);
//result : Red House

এক্সটেনশন পদ্ধতি

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Globalization;

namespace Test
{
    public static class StringHelper
    {
        private static CultureInfo ci = new CultureInfo("en-US");
        //Convert all first latter
        public static string ToTitleCase(this string str)
        {
            str = str.ToLower();
            var strArray = str.Split(' ');
            if (strArray.Length > 1)
            {
                strArray[0] = ci.TextInfo.ToTitleCase(strArray[0]);
                return string.Join(" ", strArray);
            }
            return ci.TextInfo.ToTitleCase(str);
        }
        public static string ToTitleCase(this string str, TitleCase tcase)
        {
            str = str.ToLower();
            switch (tcase)
            {
                case TitleCase.First:
                    var strArray = str.Split(' ');
                    if (strArray.Length > 1)
                    {
                        strArray[0] = ci.TextInfo.ToTitleCase(strArray[0]);
                        return string.Join(" ", strArray);
                    }
                    break;
                case TitleCase.All:
                    return ci.TextInfo.ToTitleCase(str);
                default:
                    break;
            }
            return ci.TextInfo.ToTitleCase(str);
        }
    }

    public enum TitleCase
    {
        First,
        All
    }
}

আপনার সমস্যার সমাধানটি হ'ল "রেড হাউস" "রেড হাউস" তে রূপান্তরিত হবে এবং প্রশ্নে যেমন জিজ্ঞাসা করা হয়েছিল তেমন "রেড হাউসে" রূপান্তরিত হবে না।
ভাদিম

3
@ ট্যাকটিন এটি কাজ করবে তবে নীচের কোডটি আরও ভাল পড়া এবং সম্পাদন করা আরও সহজ o ; আপনি আরও পড়তে পারেন @ vkreynin.wordpress.com/2013/10/09/…
ভাদিম

1
আমি এই সমাধানটি পছন্দ করি না, কারণ এটি দুটি দীর্ঘ পরিস্থিতিকে এক দীর্ঘ পদ্ধতির সাথে সংযুক্ত করে। আমি কোন ধারণাগত সুবিধাও দেখতে পাচ্ছি না। এবং ঠিক প্রথম অক্ষরকে মূলধন প্রয়োগকরণ হ'ল .. হাস্যকর। আপনি যদি প্রথম অক্ষরকে মূলধন করতে চান তবে সুস্পষ্ট বাস্তবায়ন হ'ল প্রথম অক্ষরকে কেবলমাত্র মূলধন (টুআপার) করা । এর পরিবর্তে আমার দুটি পৃথক পদ্ধতি থাকবে। FirstLetterToUpperইকুইসোর উত্তরে (বা গিলেরনেটের আরও নতুন উত্তরে), এবং ToTitleCaseএখানে, তবে দ্বিতীয় প্যারামিটার ছাড়াই। তাহলে দরকার নেই enum TitleCase
টুলমেকারস্টেভ

31

ত্রুটি পরীক্ষা করে প্রথম চিঠির জন্য:

public string CapitalizeFirstLetter(string s)
{
    if (String.IsNullOrEmpty(s))
        return s;
    if (s.Length == 1)
        return s.ToUpper();
    return s.Remove(1).ToUpper() + s.Substring(1);
}

এবং এখানে একটি সহজ এক্সটেনশন হিসাবে একই

public static string CapitalizeFirstLetter(this string s)
    {
    if (String.IsNullOrEmpty(s)) return s;
    if (s.Length == 1) return s.ToUpper();
    return s.Remove(1).ToUpper() + s.Substring(1);
    }

পরিষ্কার পদ্ধতির। ধন্যবাদ!
ফিলিপ

11
public static string ToInvarianTitleCase(this string self)
{
    if (string.IsNullOrWhiteSpace(self))
    {
        return self;
    }

    return CultureInfo.InvariantCulture.TextInfo.ToTitleCase(self);
}

6

পারফরম্যান্স / মেমরির ব্যবহার যদি কোনও সমস্যা হয় তবে এটি কেবলমাত্র একটি (1) স্ট্রিংবিল্ডার এবং একটি (1) নতুন স্ট্রিংটিকে মূল স্ট্রিংয়ের মতো একই আকারের তৈরি করে।

public static string ToUpperFirst(this string str) {
  if( !string.IsNullOrEmpty( str ) ) {
    StringBuilder sb = new StringBuilder(str);
    sb[0] = char.ToUpper(sb[0]);

    return sb.ToString();

  } else return str;
}

3
এটি char[]একটি StringBuilderমোড়কের সমস্ত অবকাঠামো থাকার চেয়ে একটি সাধারণ দিয়ে করা যেতে পারে । পরিবর্তে new StringBuilder(str), ব্যবহার করুন str.ToCharArray(), এবং পরিবর্তে sb.ToString(), ব্যবহার করুন new string(charArray)StringBuilderএকটি বর্ণচিহ্ন অ্যারে নেটিভ করে যে সূচকের প্রকারটি অনুকরণ করে, তাই আসল .ToUpperলাইনটি মূলত একই হতে পারে। :-)
জোনাথন গিলবার্ট

ড্যারেন (এক বছর পরে) কীভাবে এটি ব্যবহার করবেন তা দেখায় ToCharArray, @
জোনাথান

6

দ্রুততম পদ্ধতি।

  private string Capitalize(string s){
        if (string.IsNullOrEmpty(s))
        {
            return string.Empty;
        }
        char[] a = s.ToCharArray();
        a[0] = char.ToUpper(a[0]);
        return new string(a);
}

পরীক্ষাগুলি পরবর্তী ফলাফলগুলি দেখায় (ইনপুট হিসাবে 10000000 চিহ্ন সহ স্ট্রিং): পরীক্ষার ফলাফল


1
sনাল বা খালি হলে আমি প্যারামিটারটি ফেরত দেওয়ার পরামর্শ দিই ।
ম্যাট্রিক্সরনি

4

এটা চেষ্টা কর:

static public string UpperCaseFirstCharacter(this string text) {
    return Regex.Replace(text, "^[a-z]", m => m.Value.ToUpper());
}

2
অথবা সম্ভবত অন্য কোনও চরিত্রের শ্রেণি (যেমন
বর্ণমালা meric ডাব্লু

@ দিমিত্রিলেডেন্সভ- সি # স্ট্রিং ক্লাসটি ইউটিএফ -16 টি অক্ষরে নির্মিত। স্ট্রিং ক্লাস "UTF-16 কোড ইউনিটের ক্রম হিসাবে পাঠ্যকে উপস্থাপন করে।"
টুলমেকারস্টেভ

4

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

String word ="red house";
word = word[0].ToString().ToUpper() + word.Substring(1, word.length -1);
//result: word = "Red house"

আমাদের প্রথম অক্ষর টোস্ট্রিং () রূপান্তর করা দরকার কারণ আমরা এটিকে চর অ্যারে হিসাবে পড়ছি এবং চর টাইপের টুপার () পদ্ধতি নেই।


3

এটি একটি এক্সটেনশন পদ্ধতি হিসাবে করার একটি উপায়:

static public string UpperCaseFirstCharacter(this string text)
{
    if (!string.IsNullOrEmpty(text))
    {
        return string.Format(
            "{0}{1}",
            text.Substring(0, 1).ToUpper(),
            text.Substring(1));
    }

    return text;
}

এরপরে যেমন বলা যেতে পারে:

//yields "This is Brian's test.":
"this is Brian's test.".UpperCaseFirstCharacter(); 

এবং এটির জন্য এখানে কিছু ইউনিট পরীক্ষা রয়েছে:

[Test]
public void UpperCaseFirstCharacter_ZeroLength_ReturnsOriginal()
{
    string orig = "";
    string result = orig.UpperCaseFirstCharacter();

    Assert.AreEqual(orig, result);
}

[Test]
public void UpperCaseFirstCharacter_SingleCharacter_ReturnsCapital()
{
    string orig = "c";
    string result = orig.UpperCaseFirstCharacter();

    Assert.AreEqual("C", result);
}

[Test]
public void UpperCaseFirstCharacter_StandardInput_CapitalizeOnlyFirstLetter()
{
    string orig = "this is Brian's test.";
    string result = orig.UpperCaseFirstCharacter();

    Assert.AreEqual("This is Brian's test.", result);
}

1
string.Formatoverkill হয়; কেবল কি text.Substring(0, 1).ToUpper() + text.Substring(1)
টুলমেকারস্টেভ

3

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

public static string CaptalizeFirstLetter(this string data)
{
    var chars = data.ToCharArray();

    // Find the Index of the first letter
    var charac = data.First(char.IsLetter);
    var i = data.IndexOf(charac);

    // capitalize that letter
    chars[i] = char.ToUpper(chars[i]);

    return new string(chars);
}

আমি নিশ্চিত যে এটি কিছুটা অপ্টিমাইজ করার বা পরিষ্কার করার উপায় আছে।


3

আমি এখানে কিছু পেয়েছি http://www.dotnetperls.com/uppercase-first-letter :

static string UppercaseFirst(string s)
{
// Check for empty string.
if (string.IsNullOrEmpty(s))
{
    return string.Empty;
}
// Return char and concat substring.
return char.ToUpper(s[0]) + s.Substring(1);
}

সম্ভবত এটি সাহায্য করে !!


4 বছর আগে ইক্যিসোর উত্তরের তুলনায় এটি কীভাবে উন্নতি হয়?
টুলমেকারস্টেভ

3

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

public static string FirstCharToUpper(string str)
{
    return str?.First().ToString().ToUpper() + str?.Substring(1).ToLower();
}

কেবলমাত্র একটি স্ট্রিং শব্দের জন্য কোডের কয়েকটি লাইন পরিবর্তে ছোট সমাধানের জন্য আপনাকে ধন্যবাদ!
ইমরান ফারুকী

2

এটি এটি করবে যদিও এটি এটিও নিশ্চিত করবে যে শব্দের শুরুতে কোনও ভ্রান্ত রাজধানী নেই।

public string(string s)
{
System.Globalization.CultureInfo c = new System.Globalization.CultureInfo("en-us", false)
System.Globalization.TextInfo t = c.TextInfo;

return t.ToTitleCase(s);
}

2
sটাইটিটলকেসে কল করার আগে নাল চেকের প্রয়োজন ।
তারাস অ্যালেনিন

@ কার্লোস মিউওজ টিএল ইঙ্গান হল এর স্ক্রিপ্টে লেটার কেসিং নেই। :-)
জোনাথন গিলবার্ট

2

আপনার প্রয়োজনীয় সমস্ত হ'ল এখানে অনেক জটিলতা রয়েছে বলে মনে হচ্ছে:

    /// <summary>
    /// Returns the input string with the first character converted to uppercase if a letter
    /// </summary>
    /// <remarks>Null input returns null</remarks>
    public static string FirstLetterToUpperCase(this string s)
    {
        if (string.IsNullOrWhiteSpace(s))
            return s;

        return char.ToUpper(s[0]) + s.Substring(1);
    }

লক্ষণীয় বিষয়:

  1. এটি একটি এক্সটেনশন পদ্ধতি।

  2. যদি ইনপুটটি নাল, খালি বা সাদা স্থান হয় তবে ইনপুটটি যেমন ফিরে আসে।

  3. স্ট্রিং.আইএসনুলঅরহাইটস্পেসটি। নেট ফ্রেমওয়ার্ক 4 এর সাথে প্রবর্তিত হয়েছিল এটি পুরানো ফ্রেমওয়ার্কগুলির সাথে কাজ করবে না।


1
আমি দেখতে পাচ্ছি না যে চার বছর আগে থেকে মূল গৃহীত উত্তরের এটি কীভাবে উন্নতি হয় improvement বস্তুত, এটা হয় অসঙ্গত নতুন ব্যবহারের শুধুমাত্র উপকার: (harmlessly তাই হয়, কিন্তু চার বছর দেরী, আমি একটি নতুন উত্তর যোগ করার সুবিধার জন্য উচ্চ মান আছে) IsNullOrWhiteSpaceবদলে IsNullOrEmpty, যদি আপনি করতে যাচ্ছি খুঁজে পেতে এবং পরিবর্তন প্রথম অ সাদা স্থান । তবে আপনি করবেন না - আপনি সর্বদা চালিত হন s[0]। সুতরাং এটির অর্থহীন [শব্দার্থক ও পারফরম্যান্স উভয়ই] ব্যবহার করা IsNullOrWhiteSpace
টুলমেকারস্টেভ

... কেন এই ব্যবহার IsNullOrWhiteSpaceআমাকে কষ্ট দেয়, তা হ'ল একজন গাফিল পাঠক মনে করতে পারে "তিনি সাদা স্থানের জন্য পরীক্ষা করেছেন, সুতরাং নীচের কোডটি সত্যই একটি বর্ণ খুঁজে পেয়েছে এবং পরিবর্তিত করে, এমনকি এটি যদি সাদা জায়গার আগেও হয়"। যেহেতু আপনার কোডটি সাদা স্থানের পূর্ববর্তী "প্রথম" অক্ষরটি পরিবর্তন করতে ব্যর্থ হবে, তাই IsNullOrWhiteSpaceকেবলমাত্র পাঠককে বিভ্রান্ত করতে পারে ।
টুলমেকারস্টেভ

... উফ, আমি স্বীকৃত উত্তর বলতে চাই না, আমি একই সময়ের থেকে ইক্যুইসোর উত্তর বোঝাতে চাইছি
টুলমেকারস্টেভ

1
string emp="TENDULKAR";
string output;
output=emp.First().ToString().ToUpper() + String.Join("", emp.Skip(1)).ToLower();

টেললওয়ার () লেজ এ কেন ?. প্রথম অক্ষর ছাড়া অন্য বর্ণগুলির প্রয়োজন নেই।
কার্লোস Muñoz

Stringএটি হ'ল এটি Upperবা Lowerতার জন্য সমস্ত কিছু স্ট্রিংয়ের জেনেরিক সমাধান হতে পারে ।
শৈলেশ

এর Joinবদলে কেন emp.First().ToString().ToUpper() + emp.Substring(1);? সম্ভবত খুব বেশী আত্মরক্ষামূলক হতে প্রয়োজন: output = string.IsNullOrEmpty(emp) ? string.Empty : [...]। এছাড়াও, ফাইউইউ, @ কার্লোসমুওজ-এর সাথে একমত - আপনার ToLower()ওপি-র প্রশ্নের প্রয়োজন নেই।
রাফিন

@ Ruffin -> ব্যবহার Substring কোডের ভালো লেখার শৈলী এছাড়াও, আমি একটি কোড ছাঁটা আপনার সমাধান একমত কিন্তু এক্ষেত্রে লেখা ToLower()ভাল প্রোগ্রামিংয়ের অভ্যাস। stringকিছু হতে পারে Upperক্ষেত্রে বা Lowerক্ষেত্রে ব্যবহারকারীর ইনপুট উপর নির্ভর করে, আমি একটি জেনেরিক সমাধান দেই।
শৈলেশ

@Shailesh - তবে, প্রশ্ন হয়নি না অনুরোধ শুধুমাত্র প্রথম চিঠি একটি রাজধানী হবে। এটি প্রথম অক্ষরকে মূলধন হিসাবে পরিবর্তিত করার জন্য জিজ্ঞাসা করেছিল। লেখকের আরও ব্যাখ্যা ছাড়াই, সবচেয়ে প্রাকৃতিক ধারণাটি হ'ল স্ট্রিংয়ের বাকী অংশটি অপরিবর্তিত রাখা উচিত। আপনি তিন বছর পরে উত্তর দিচ্ছেন তা প্রদত্ত , অনুগ্রহ করে ধরে নিন যে গৃহীত উত্তরটি অনুরোধকারী যা অনুরোধ করেছিল তা করে। এটির ভিন্নভাবে করার কিছু প্রযুক্তিগত কারণ থাকলে কেবল একটি আলাদা উত্তর দিন।
টুলমেকারস্টেভ

1

আমি একটি "সর্বোচ্চ পারফরম্যান্স" উত্তর সরবরাহ করতে চেয়েছিলাম। আমার মনে, একটি "ম্যাক্সিমাম পারফর্মেন্স" উত্তর সমস্ত পরিস্থিতিতে ধরে এবং সেই পরিস্থিতিতেগুলির অ্যাকাউন্টিং প্রশ্নের উত্তর সরবরাহ করে। সুতরাং, এখানে আমার উত্তর। এই কারণগুলি সহ:

  1. ইসনুলআরওহাইটস্পেস কেবলমাত্র ফাঁকা স্থান বা নাল / ফাঁকা স্ট্রিংয়ের জন্য অ্যাকাউন্ট করে।
  2. .Trim () স্ট্রিংয়ের সামনের এবং পিছন থেকে সাদা স্থান সরিয়ে দেয়।
  3. .প্রথম () একটি আয়করনীয় (বা স্ট্রিং) এর প্রথম অক্ষর নেয়।
  4. আমাদের এটি পরীক্ষা করা উচিত যে এটি কোনও চিঠি যা বড় হাতের / হওয়া উচিত।
  5. তারপরে আমরা বাকী স্ট্রিংটি যুক্ত করি, কেবল তখন দৈর্ঘ্যটি নির্দেশ করা উচিত should
  6. । সর্বোত্তম অনুশীলনের দ্বারা, আমাদের সিস্টেম.গ্লোবালাইজেশন.কলচারআইনফো এর অধীনে একটি সংস্কৃতি সরবরাহ করা উচিত।
  7. Alচ্ছিক পরামিতি হিসাবে তাদের সরবরাহ করা প্রতিটি সময় নির্বাচিত সংস্কৃতি টাইপ না করে এই পদ্ধতিটিকে সম্পূর্ণ পুনরায় ব্যবহারযোগ্য করে তোলে makes

    public static string capString(string instring, string culture = "en-US", bool useSystem = false)
    {
        string outstring;
        if (String.IsNullOrWhiteSpace(instring))
        {
            return "";
        }
        instring = instring.Trim();
        char thisletter = instring.First();
        if (!char.IsLetter(thisletter))
        {
            return instring;   
        }
        outstring = thisletter.ToString().ToUpper(new CultureInfo(culture, useSystem));
        if (instring.Length > 1)
        {
            outstring += instring.Substring(1);
        }
        return outstring;
    }

2
এটি বেশিরভাগ ক্ষেত্রে কভার করে, প্রতিটি ক্রিয়াকলাপের সাথে স্ট্রিংয়ের সংখ্যা তৈরি করা বিবেচনা করে ধীর করা হবে না? এখানে এক টন স্ট্রিং বরাদ্দ চলছে। সাধারণত এটি একবার বরাদ্দ করা হবে, এবং শুধুমাত্র একবার।
ডগলাস গ্যাসকেল

1

সম্প্রতি আমার অনুরূপ প্রয়োজনীয়তা ছিল এবং মনে আছে যে লিনকিউ ফাংশন নির্বাচন করুন () একটি সূচক সরবরাহ করে:

string input;
string output;

input = "red house";
output = String.Concat(input.Select((currentChar, index) => index == 0 ? Char.ToUpper(currentChar) : currentChar));
//output = "Red house"

যেহেতু আমার খুব প্রয়োজন যে আমি স্ট্রিংয়ের ধরণের জন্য একটি এক্সটেনশন পদ্ধতি তৈরি করেছি:

public static class StringExtensions
{
    public static string FirstLetterToUpper(this string input)
    {
        if (string.IsNullOrEmpty(input))
            return string.Empty;
        return String.Concat(input.Select((currentChar, index) => index == 0 ? Char.ToUpper(currentChar) : currentChar));
    }
}

দয়া করে মনে রাখবেন যে কেবলমাত্র প্রথম অক্ষর আপার ক্ষেত্রে রূপান্তরিত হয় - বাকি সমস্ত অক্ষর স্পর্শ করা হয় না। আপনার যদি অন্যান্য অক্ষরগুলি ছোট আকারের হওয়ার প্রয়োজন হয় তবে আপনি সূচী> 0 এর জন্য Char.ToLower (বর্তমানচর) বা কল টোলওয়ারকে কল করতে পারেন (প্রথম) পুরো স্ট্রিংয়ে।

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


আমি ভাবছিলাম যে আমি কীভাবে এই সমস্যাটি সমাধান করব, আমার নিজস্ব সমাধান তৈরি করেছি, কেবলমাত্র আপনি ইতিমধ্যে আমার কাছে ঠিক একই সমাধান নিয়ে এসেছেন তা খুঁজে পেতে এটি পোস্ট করে ফিরে এসেছি। আপনাকে +1!
ব্লুফিজিথিং

আপনাকে অনেক ধন্যবাদ.
গ্রিম

1

আমি মনে করি নীচের পদ্ধতিটিই সেরা সমাধান

    class Program
{
    static string UppercaseWords(string value)
    {
        char[] array = value.ToCharArray();
        // Handle the first letter in the string.
        if (array.Length >= 1)
        {
            if (char.IsLower(array[0]))
            {
                array[0] = char.ToUpper(array[0]);
            }
        }
        // Scan through the letters, checking for spaces.
        // ... Uppercase the lowercase letters following spaces.
        for (int i = 1; i < array.Length; i++)
        {
            if (array[i - 1] == ' ')
            {
                if (char.IsLower(array[i]))
                {
                    array[i] = char.ToUpper(array[i]);
                }
            }
        }
        return new string(array);
    }

    static void Main()
    {
        // Uppercase words in these strings.
        const string value1 = "something in the way";
        const string value2 = "dot net PERLS";
        const string value3 = "String_two;three";
        const string value4 = " sam";
        // ... Compute the uppercase strings.
        Console.WriteLine(UppercaseWords(value1));
        Console.WriteLine(UppercaseWords(value2));
        Console.WriteLine(UppercaseWords(value3));
        Console.WriteLine(UppercaseWords(value4));
    }
}

Output

Something In The Way
Dot Net PERLS
String_two;three
 Sam

সুত্র


1

যেহেতু এই প্রশ্নটি সর্বাধিক পারফরম্যান্সের বিষয়ে আমি ড্যারেনের সংস্করণ ব্যবহার করতে ব্যবহার করেছি Span, যা আবর্জনা হ্রাস করে এবং গতি প্রায় 10% দ্বারা উন্নত করে।

        /// <summary>
        /// Returns the input string with the first character converted to uppercase
        /// </summary>
        public static string ToUpperFirst(this string s)
        {
            if (string.IsNullOrEmpty(s))
                throw new ArgumentException("There is no first letter");

            Span<char> a = stackalloc char[s.Length];
            s.AsSpan(1).CopyTo(a.Slice(1));
            a[0] = char.ToUpper(s[0]);
            return new string(a);
        }

কর্মক্ষমতা

|  Method |      Data |      Mean |     Error |    StdDev |
|-------- |---------- |----------:|----------:|----------:|
|  Carlos |       red | 107.29 ns | 2.2401 ns | 3.9234 ns |
|  Darren |       red |  30.93 ns | 0.9228 ns | 0.8632 ns |
| Marcell |       red |  26.99 ns | 0.3902 ns | 0.3459 ns |
|  Carlos | red house | 106.78 ns | 1.9713 ns | 1.8439 ns |
|  Darren | red house |  32.49 ns | 0.4253 ns | 0.3978 ns |
| Marcell | red house |  27.37 ns | 0.3888 ns | 0.3637 ns |

সম্পূর্ণ পরীক্ষার কোড

using System;
using System.Linq;

using BenchmarkDotNet.Attributes;

namespace CorePerformanceTest
{
    public class StringUpperTest
    {
        [Params("red", "red house")]
        public string Data;

        [Benchmark]
        public string Carlos() => Data.Carlos();

        [Benchmark]
        public string Darren() => Data.Darren();

        [Benchmark]
        public string Marcell() => Data.Marcell();
    }

    internal static class StringExtensions
    {
        public static string Carlos(this string input) =>
            input switch
            {
                null => throw new ArgumentNullException(nameof(input)),
                "" => throw new ArgumentException($"{nameof(input)} cannot be empty", nameof(input)),
                _ => input.First().ToString().ToUpper() + input.Substring(1)
            };

        public static string Darren(this string s)
        {
            if (string.IsNullOrEmpty(s))
                throw new ArgumentException("There is no first letter");

            char[] a = s.ToCharArray();
            a[0] = char.ToUpper(a[0]);
            return new string(a);
        }

        public static string Marcell(this string s)
        {
            if (string.IsNullOrEmpty(s))
                throw new ArgumentException("There is no first letter");

            Span<char> a = stackalloc char[s.Length];
            s.AsSpan(1).CopyTo(a.Slice(1));
            a[0] = char.ToUpper(s[0]);
            return new string(a);
        }
    }

}

সম্পাদনা: একটি টাইপ ছিল, s [0] এর পরিবর্তে, এটি ছিল [0] - এই ফলাফলটি বরাদ্দ স্প্যান এ এর ​​একই, খালি মানের সাথে ফলাফল করে।


0

এটি এই প্রথম চিঠিটি এবং একটি স্থানের পরে প্রতিটি অক্ষর এবং অন্য কোনও অক্ষরকে ছোট করে তোলে।

public string CapitalizeFirstLetterAfterSpace(string input)
{
    System.Text.StringBuilder sb = new System.Text.StringBuilder(input);
    bool capitalizeNextLetter = true;
    for(int pos = 0; pos < sb.Length; pos++)
    {
        if(capitalizeNextLetter)
        {
            sb[pos]=System.Char.ToUpper(sb[pos]);
            capitalizeNextLetter = false;
        }
        else
        {
            sb[pos]=System.Char.ToLower(sb[pos]);
        }

        if(sb[pos]=' ')
        {
            capitalizeNextLetter=true;
        }
    }
}

1
অথবা আপনি কোডের দেয়াল লিখতে না চাইলে - সংস্কৃতিআইফোন.কন্টেনক্রালচার.টেক্সটইনফো.টো টাইটেলক্যাস (দ্য স্ট্রিং); একই জিনিস।
শেভ

হ্যাঁ ... আমি সে সম্পর্কে জানতাম না :) এবং আমার প্রচুর পরিমাণে কোডের কারণে, আমি এখনও টাইপ করার সময় অন্য সবার উত্তর পপ আপ হয়েছিল।
thattolleyguy

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

0

নিম্নলিখিত কোড ব্যবহার করুন:

string  strtest ="PRASHANT";
strtest.First().ToString().ToUpper() + strtest.Remove(0, 1).ToLower();

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

0

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

এটি কেবল একটি চিন্তাধারা হিসাবে যুক্ত করুন:

public static string SetFirstCharUpper2(string aValue, bool aIgonreLeadingSpaces = true)
{
    if (string.IsNullOrWhiteSpace(aValue))
        return aValue;

    string trimmed = aIgonreLeadingSpaces 
           ? aValue.TrimStart() 
           : aValue;

    return char.ToUpper(trimmed[0]) + trimmed.Substring(1);
}   

এটি হ্যান্ডেল করা উচিত this won't work on other answers(বাক্যটির শুরুতে একটি স্থান রয়েছে), এবং আপনি যদি স্থানটি ছাঁটাই পছন্দ করেন না, তবে কেবলমাত্র falseদ্বিতীয় প্যারামিটার হিসাবে পাস করুন (বা ডিফল্টটি এতে পরিবর্তন করুন falseএবং trueআপনি যদি স্থানটি মোকাবেলা করতে চান তবে পাস করুন )



0

প্রথম অক্ষরের মূলধনটি আদানের সবচেয়ে সহজ উপায় হ'ল:

1- Sytem.Globalization ব্যবহার;

  // Creates a TextInfo based on the "en-US" culture.
  TextInfo myTI = new CultureInfo("en-US",false).

  myTI.ToTitleCase(textboxname.Text)

`


1
এই উত্তরটি বছরগুলি আগে দেওয়া উত্তরগুলির সাথে মূলত অভিন্ন । এটি আলোচনায় কিছুই যোগ করে না।
টুলমেকারস্টেভ

এটি অন্যটির মতামতের মতোই এটিও ভুল, এটি প্রতিটি শব্দের প্রতিটি প্রথম অক্ষরকে রেড হাউসের পরিবর্তে রেড হাউস নয়।
ডেডলিচামার্স

0

নিম্নলিখিত ফাংশনটি সমস্ত উপায়ে সঠিক:

static string UppercaseWords(string value)
{
    char[] array = value.ToCharArray();
    // Handle the first letter in the string.
    if (array.Length >= 1)
    {
        if (char.IsLower(array[0]))
        {
            array[0] = char.ToUpper(array[0]);
        }
    }
    // Scan through the letters, checking for spaces.
    // ... Uppercase the lowercase letters following spaces.
    for (int i = 1; i < array.Length; i++)
    {
        if (array[i - 1] == ' ')
        {
            if (char.IsLower(array[i]))
            {
                array[i] = char.ToUpper(array[i]);
            }
        }
    }
    return new string(array);
}

আমি এটি এখানে পেয়েছি


কেন? ইতিমধ্যে অনুরূপ বলে মনে হচ্ছে এমন অনেক উত্তর যখন রয়েছে তখন কেন অন্য একটি উত্তর যুক্ত করবেন ? সমস্ত বিদ্যমান উত্তরগুলির সাথে কী ভুল , এটি আপনাকে অন্য একটি যুক্ত করতে উত্সাহিত করেছিল?
টুলমেকারস্টেভ

কারণ এই উত্তরওয়ালা সমস্ত উপায়ে সঠিক। এটা হাল্কা ভাবে নিন.

আমি দুঃখিত; আমি অহেতুক কঠোর ছিলাম। আমি এই সত্যগুলিতে আঁকড়ে থাকব : 1) এটি মূলত সাত বছর আগে থ্যাটোলিগুয়ের উত্তর হিসাবে একই । 2) এটির উত্তরটির মতো একই ত্রুটি রয়েছে: ফাঁকা চরিত্র ছাড়া অন্য সাদা স্থান পরিচালনা করে না। 3) এটি ওপি জিজ্ঞাসা করার চেয়ে কিছুটা আলাদা প্রশ্নের উত্তর দেয়। আপনি যদি সমস্ত শব্দ প্রথম অক্ষরের মূলধন করতে চান তবে এর মতো একটি উত্তর ব্যবহার করুন । 4) সাধারণত, এটি সম্পাদন করার সহজ উপায় হ'ল টাইটেল ইন.ফো.টোটিটেল কেস ব্যবহার করা। (অন্যদিকে কোড নমুনার একটি সুবিধা হ'ল পছন্দসই অনুসারে কাস্টমাইজ করা যায়))
টুলমেকারস্টেভ

নিজেকে সংশোধন করা: এটি থ্যাললিগুয়ের পদ্ধতির চেয়ে পৃথক: এটি এমন শৃঙ্খলাবদ্ধ অক্ষর ছেড়ে দেয় যা শব্দের প্রথম অক্ষর নয়। পরিবর্তে, এটা একটি হল ডুপ্লিকেট এর zamoldar এর উত্তর । সুবিধাজনকভাবে, উৎস লিংক দেবার জন্য Darian যশ - এটা zamoldar চুরি করা ক্রেডিট প্রদান ছাড়া মনে হয়। সেই উত্স লিঙ্কটি সরবরাহ করার কারণে, এবং এর মাধ্যমে আলোচনার উন্নতি করার কারণে , আমি আমার সমালোচনা করা সত্ত্বেও, এই উত্তরটিকে সমর্থন করছি।
টুলমেকারস্টেভ

1
ডায়রিয়ান, দুটি উন্নতি যা করা যেতে পারে: 1) সমস্ত সাদা স্থান পরিচালনা করার char.IsWhiteSpace( array[ i -1 ] )পরিবর্তে ব্যবহার করুন .. == ' '। 2) যে দুটি জায়গা করে তা সরিয়ে ফেলুন if (char.isLower(..))- তারা কোনও উদ্দেশ্য করে না purpose ToUpperকোনও চরিত্র ছোট ক্ষেত্রে না হলে কেবল কিছুই করে না।
টুলমেকারস্টেভ

0

উপরের কার্লোসের প্রশ্নের বিস্তৃতি, আপনি যদি একাধিক বাক্যকে মূলধন করতে চান তবে আপনি এই কোডটি ব্যবহার করতে পারেন:

    /// <summary>
    /// Capitalize first letter of every sentence. 
    /// </summary>
    /// <param name="inputSting"></param>
    /// <returns></returns>
    public string CapitalizeSentences (string inputSting)
    {
        string result = string.Empty;
        if (!string.IsNullOrEmpty(inputSting))
        {
            string[] sentences = inputSting.Split('.');

            foreach (string sentence in sentences)
            {
                result += string.Format ("{0}{1}.", sentence.First().ToString().ToUpper(), sentence.Substring(1)); 
            }
        }

        return result; 
    }

0

আপনার সমস্যা সমাধানের সম্ভাব্য সমাধান।

   public static string FirstToUpper(this string lowerWord)
   {
       if (string.IsNullOrWhiteSpace(lowerWord) || string.IsNullOrEmpty(lowerWord))
            return lowerWord;
       return new StringBuilder(lowerWord.Substring(0, 1).ToUpper())
                 .Append(lowerWord.Substring(1))
                 .ToString();
   }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.