সি # তে একাধিক স্ট্রিং আক্ষরিক


1045

সি # তে মাল্টলাইন স্ট্রিং আক্ষরিক তৈরি করার কোন সহজ উপায় আছে?

আমার এখন যা আছে তা এখানে:

string query = "SELECT foo, bar"
+ " FROM table"
+ " WHERE id = 42";

আমি জানি পিএইচপি আছে

<<<BLOCK

BLOCK;

সি # এর কি কিছু মিল রয়েছে?


1
আপনার উদাহরণে কোনও লাইন ব্রেক নেই। তুমি কি তাদের চাও?
উইকিউর

8
না। আমি কেবল দৃশ্যমানতা / কোড পরিষ্কারের কারণে একাধিক লাইন চেয়েছিলাম।
চেটে

6
সেক্ষেত্রে ভারব্যাটিম স্ট্রিংগুলিতে লাইন বিরতি থাকে। আপনি @ "..." ব্যবহার করতে পারেন। আপনার পছন্দ হলে প্রতিস্থাপন করুন (পরিবেশ। নিউলাইন, "")।
উইকিউর

9
42এসকিউএল ইঞ্জেকশনটি এড়াতে আপনার প্যারামিটার হিসাবে বাঁধাই করা উচিত , বিশেষত এটি যদি ব্যবহারকারী ইনপুট থেকে আসে।
জেনস মোলেনহফ

@ জেনসমাহলেহফ কীভাবে কোনও কোডে সংজ্ঞায়িত একটি হার্ড কোডিং স্ট্রিং ইনজেক্ট করবেন?
মিঃ বয়

উত্তর:


1586

ভারব্যাটিম স্ট্রিং আক্ষরিক গঠনের জন্য আপনি এটির@ সামনে চিহ্নটি ব্যবহার করতে পারেন :string

string query = @"SELECT foo, bar
FROM table
WHERE id = 42";

আপনি যখন এই পদ্ধতিটি ব্যবহার করেন তখন আপনাকে বিশেষ অক্ষরগুলি থেকেও বাঁচতে হবে না , জোন স্কিটের উত্তরে বর্ণিত ডাবল উক্তি ব্যতীত।


43
এটি যাইহোক স্ট্রিং আক্ষরিক - এটি @ চিহ্ন সহ একটি ভারব্যাটিম স্ট্রিং আক্ষরিক।
জন স্কিটি

95
যদি আপনার স্ট্রিংয়ে ডাবল-কোট (") থাকে তবে আপনি সেগুলি থেকে বাঁচতে পারেন:" "(দুটি ডাবল-উদ্ধৃতি দুটি অক্ষর রয়েছে)
মুড'ডিব

8
এটি নতুন লাইন তৈরি না করে উপরের কিছু করার উপায় আছে? আমার কাছে একটি দীর্ঘ দীর্ঘ টেক্সট রয়েছে যা আমি আইডিইতে জড়িত দেখতে দেখতে প্লাসটি ব্যবহার না করেই ("হাই" + "") দেখতে চাই।
noelicus

2
@ নেলিকাস - আসলেই নয়, তবে আপনি উপরের উইকিউরের কৌশলটি ব্যবহার করে তা বুঝতে পেরেছেন:@"my string".Replace(Environment.NewLine, "")
জন

8
@ আফশর্ম আপনি $ @ "" পাঠ্য "
প্যাট্রিক ম্যাকডোনাল্ড

566

একে সি # তে ভারব্যাটিম স্ট্রিং আক্ষরিক বলা হয় , এবং এটি @ আক্ষরিকের আগে রাখার বিষয়। এটি কেবল একাধিক লাইনকেই অনুমতি দেয় না, তবে এটি পালিয়ে যাওয়া বন্ধ করে দেয়। সুতরাং উদাহরণস্বরূপ আপনি এটি করতে পারেন:

string query = @"SELECT foo, bar
FROM table
WHERE name = 'a\b'";

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

পালানোর একমাত্র বিট হ'ল যদি আপনি একটি ডাবল উদ্ধৃতি চান তবে আপনাকে একটি অতিরিক্ত ডাবল উদ্ধৃতি চিহ্ন যুক্ত করতে হবে:

string quote = @"Jon said, ""This will work,"" - and it did!";

2
এই উত্তরটি ভুল; এটি নিউলাইনগুলি উপস্থাপন করে যা ওপিকে পছন্দ করে না।
TamaMcGlinn

@ তামাএমসিগ্লিন: আমি সে সম্পর্কে উত্তরে কিছু যুক্ত করব - ওপি যখন প্রশ্নটি লিখেছিল তখন তা পরিষ্কার ছিল না।
জন স্কিটি

105

আমার কাছে স্ট্রিং আক্ষরিক ব্যবহারে সমস্যাটি হ'ল এটি আপনার কোডটিকে কিছুটা " অদ্ভুত " দেখাতে পারে কারণ স্ট্রিংয়ের মধ্যে ফাঁকা স্থান না পাওয়ার জন্য এটি পুরোপুরি প্রান্তিককরণে রেখে যেতে হবে:

    var someString = @"The
quick
brown
fox...";

ইশ।

সুতরাং আমি যে সমাধানটি ব্যবহার করতে চাই তা হ'ল যা আপনার বাকী কোডের সাথে সবকিছু সুসংযুক্ত করে রাখে:

var someString = String.Join(
    Environment.NewLine,
    "The",
    "quick",
    "brown",
    "fox...");

এবং অবশ্যই, যদি আপনি শুধু কথাটি একটি SQL বিবৃতি লাইনের আপ বিভক্ত মত তুমি চান এবং আসলে একটি নতুন লাইন প্রয়োজন হবে না, আপনি সবসময় ঠিক প্রতিস্থাপন করতে পারেন Environment.NewLineজন্য " "


2
অনেক ক্লিনার, ধন্যবাদ। এছাড়াও, স্ট্রিং.কনক্যাট একইভাবে কাজ করে এবং পৃথককারী প্রয়োজন হয় না।
শেঠ

ধন্যবাদ। আমি স্ট্রিং পছন্দ করি for
টিভিএসরিজ ডটকম রব

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

@ গনকোডিং, আপনি কি সে সম্পর্কে নিশ্চিত? সংকলক দূরে সংক্ষেপণ অনুকূল করতে পারেন।
উইলিয়াম জকুশ

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

104

দেখার জন্য অন্য একটি গ্যাচা হ'ল স্ট্রিং For ফরম্যাটে স্ট্রিং লিটারেল ব্যবহার। সেক্ষেত্রে আপনার কোঁকড়ানো ধনুর্বন্ধনী / বন্ধনী '{' এবং '}' এড়াতে হবে।

// this would give a format exception
string.Format(@"<script> function test(x) 
      { return x * {0} } </script>", aMagicValue)
// this contrived example would work
string.Format(@"<script> function test(x) 
      {{ return x * {0} }} </script>", aMagicValue)

14
এবং এটি কি পার্থক্য করে? "@" এর সাথে বা ছাড়াই আপনাকে "{double" দ্বিগুণ করতে হবে "{" মুদ্রণযোগ্য চরিত্র হিসাবে পেতে, এটি স্ট্রিংয়ের বিষয় For ফর্ম্যাট, স্ট্রিং সামগ্রী নয়।
গ্রীনোল্ডম্যান

12
এটি জাভাস্ক্রিপ্ট কোডটি একটি স্ট্রিংয়ে রাখতে চান এমন লোকদের জন্য এটি একটি উল্লেখযোগ্য গোচা, যা নিয়মিত স্ট্রিংয়ের চেয়ে ভারব্যাটিম স্ট্রিং লিটারে আরও প্রায়শই করা যেতে পারে।
এড ব্রান্নিন

2
নতুন সি # 6.0 এ, আপনি ভারব্যাটিম স্ট্রিং আক্ষরিক (যেমন $ @ "মানটি {এটি al মূল্য}";) এর সাথে একটি সূচী সম্পত্তি অপারেটর ব্যবহার করতে পারেন
হিলিয়াক

2
@ হেলিয়াক আমার মনে হয় আপনার বোঝানো আন্তঃবিবাহিত স্ট্রিংগুলিও সেই বাক্য গঠনটির সাথে আক্ষরিক হতে পারে। var কোয়েরি = $ @ "foo নির্বাচন করুন, টেবিল থেকে বার যেখানে id = {id}";
ব্রায়ানারি

101

পার্শ্ব-নোট হিসাবে, সি # 6.0 এর সাথে আপনি এখন ভারব্যাটিম স্ট্রিং আক্ষরিকের সাথে ইন্টারপোল্টেড স্ট্রিংগুলি একত্রিত করতে পারেন:

string camlCondition = $@"
<Where>
    <Contains>
        <FieldRef Name='Resource'/>
        <Value Type='Text'>{(string)parameter}</Value>
    </Contains>
</Where>";

10
শীতল, আমি এখন পর্যন্ত এই সম্পর্কে জানতাম না। যদি কারও আগ্রহ থাকে: $ জিনিসটিকে "ইন্টারপোলেটেড স্ট্রিংস" বলা হয় এবং আপনি এ সম্পর্কে এখানে বিশদভাবে পড়তে পারেন: msdn.microsoft.com/en-us/library/dn961160.aspx
Hauke ​​P.

tx, শব্দটি স্থির করে
হেলিয়াক

1
আমি ধরে নিলাম একটি আক্ষরিক কোঁকড়ানো ধনুর্বন্ধনী তারপর দ্বিগুণ করা আবশ্যক, যেমন $@"{{example literal text { fooString }. }}" এটি কিছু বিভ্রান্ত হতে পারে কারণ কৌণিক, প্রতিক্রিয়া এবং Vue.js বিপরীত কনভেনশন ব্যবহার করে।
প্যাট্রিক জাজালাপস্কি

58

লোকেরা স্ট্রিং লিটারেলগুলির সাথে কেন বিভ্রান্তিকর স্ট্রিংগুলি রাখে? গৃহীত উত্তর একটি পৃথক প্রশ্নের দুর্দান্ত উত্তর; এই এক না।

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

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

সি # তে, বিবৃতি ...

 string query = "SELECT foo, bar"
 + " FROM table"
 + " WHERE id = 42";

... তিন লাইনের স্ট্রিং তৈরি করে না তবে একটি লাইনার তৈরি করে; তিনটি স্ট্রিংয়ের সংমিশ্রণ (প্রতিটি আলাদা আক্ষরিক থেকে আরম্ভ করা) যার কোনওটিতেই একটি নতুন-লাইন সংশোধক নেই।

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

ভারব্যাটিম স্ট্রিং, মাইন্ডমাইন্ড StringBuilderএস, String.Joinএস বা এমনকি নেস্টেড ফাংশনগুলি স্ট্রিং রিভার্সালের সাথে ব্যবহার করার পরামর্শ দিচ্ছে এবং কী নয়, তা আমাকে ভাবায় যে মানুষ সত্যই প্রশ্নটি বুঝতে পারছে না। অথবা আমি এটা বুঝতে পারি না।

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

সম্ভবত বর্তমান সংস্করণগুলি এটি সমর্থন করে তবে আমি ভেবেছিলাম স্ট্রিং এবং স্ট্রিং লিটারেলের মধ্যে আমি যে পার্থক্যটি উপলব্ধি তা ভাগ করব।

হালনাগাদ:

(MeowCat2012 এর মন্তব্য থেকে) আপনি পারেন। ওপি দ্বারা "+" পদ্ধতির সেরা। অনুমান অনুসারে অপ্টিমাইজেশন গ্যারান্টিযুক্ত: http://stackoverflow.com/a/288802/9399618


1
কেউ কেউ (আমার সহ) মূল প্রশ্নটি দেখে থাকতে পারে এমন বিভ্রান্তিটি হ'ল এখানে-ডক ফর্ম্যাট (শেল, পিএইচপি, পার্ল, ...) নতুন লাইনের অন্তর্ভুক্ত। সুতরাং যদি ওপি পিএইচপি এর বংশগতির সাথে তুলনা করে, তবে নতুন লাইনগুলি সহ কোনও সমস্যা হওয়া উচিত ছিল না।
টঙ্কটালাস

যথাযথভাবে। যতদূর আমি জানি, আপনার উত্তর "না, আপনি সি # তে এটি করতে পারবেন না" সঠিক।
TamaMcGlinn

আমাকে জানানো হয়েছিল যে জাভাতে, এই জাতীয় সংযুক্ত স্ট্রিং সংকলিত বাইকোডে একক স্ট্রিং আক্ষরিক হয়ে উঠবে। হয়তো ডট নেটও তাই করবে?
মেও বিড়াল 2012

2
আপনি পারেন। ওপি দ্বারা "+" পদ্ধতির সেরা। অনুমান অনুসারে অপ্টিমাইজেশনের গ্যারান্টিযুক্ত: স্ট্যাকওভারফ্লো.com / a / 288802 / 9399618 তবুও আপনি এই প্রশ্নটি বোঝার কয়েকটি মাত্র একজন। সম্ভাব্য বিভ্রান্তিকর কিন্তু গৃহীত উত্তরগুলি মুছে ফেলা বা ভাঁজ করা কি সম্ভব হবে?
মেও বিড়াল 2012

1
ইঙ্গিতটির জন্য ধন্যবাদ, @ মেওগেট2012। কিছু দ্রবীভূত কোডের দিকে তাকালে মনে হয় এটি প্রকৃতপক্ষে।
কারভো লোকো

12

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

    private string createTableQuery = "";

    void createTable(string tableName)
    {

         createTableQuery = @"CREATE TABLE IF NOT EXISTS
                ["+ tableName  + @"] (
               [ID] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, 
               [Key] NVARCHAR(2048)  NULL, 
               [Value] VARCHAR(2048)  NULL
                                )";
    }

10
বেশ বিপজ্জনক আমি বলি: কারো পক্ষে স্কেল-ইনজেকশন তৈরি করা সহজ।
কাই

4
এটি ঠিক আছে যতক্ষণ না আপনি জানেন যে আপনার ক্যোয়ারিং স্ট্রিংয়ের সমস্ত ভেরিয়েবল (যদি থাকে!) কোড কনস্টেন্ট বা অন্য কোনও নিরাপদ উত্স থেকে আসে - যেমন, createTable("MyTable"); কোনও ক্ষেত্রেই, ওপির প্রশ্নটি কীভাবে সরাসরি কোডে মাল্টলাইন স্ট্রিং আক্ষরিক প্রবেশ করানো সম্পর্কে ছিল , কীভাবে প্রতি ডাটাবেস কোয়েরিগুলি তৈরি করবেন না। :)
dbeachy1

2
সম্ভবত একটি স্ট্রিং বিল্ডার ব্যবহার করা উচিত, বিশেষত প্লাসের সংখ্যা (+) যদি অনেক বেশি হয়।
gldraphael

8

আপনি @ এবং "" ব্যবহার করতে পারেন ।

        string sourse = @"{
        ""items"":[
        {
            ""itemId"":0,
            ""name"":""item0""
        },
        {
            ""itemId"":1,
            ""name"":""item1""
        }
        ]
    }";

2
@ প্রতিটি শব্দটি কী করে তা ব্যাখ্যা করা উচিত, কারণ @ ভার্বাটিম স্ট্রিংয়ের জন্য এবং "" ডাবল উদ্ধৃতি থেকে বেরিয়ে আসার জন্য।
22:58 এগ্রি

4

হ্যাঁ, আপনি আসল স্ট্রিংয়ে নিউলাইনগুলি প্রবর্তন না করে একাধিক লাইনে স্ট্রিং বিভক্ত করতে পারেন তবে এটি বেশ সুন্দর:

string s = $@"This string{
string.Empty} contains no newlines{
string.Empty} even though it is spread onto{
string.Empty} multiple lines.";

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

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

এই ইউনিট পরীক্ষাটি উদ্দেশ্যটি দেখায়:

    [TestMethod]
    public void StringLiteralDoesNotContainSpaces()
    {
        string query = "hi"
                     + "there";
        Assert.AreEqual("hithere", query);
    }

ক্যোয়ারির উপরের সংজ্ঞাটি পরিবর্তন করুন যাতে এটি দুটি স্ট্রিং লিটারেলের সংমিশ্রণের পরিবর্তে একটি স্ট্রিং আক্ষরিক হয় যা সংকলক দ্বারা একটিতে অনুকূলিত হতে পারে বা নাও হতে পারে।

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

কেবলমাত্র একটি বিকল্প রয়েছে যা সংকলক অপ্টিমাইজেশনের উপর নির্ভর করে না যা ঘটতে পারে না, যা আপনার সংজ্ঞাটিকে একটি লাইনে রাখে। আপনি যদি সংকলক অপ্টিমাইজেশনের উপর নির্ভর করতে চান তবে ইতিমধ্যে আপনার কাছে থাকা + দুর্দান্ত; আপনার স্ট্রিংটি বাম-সারিবদ্ধ করতে হবে না, ফলস্বরূপ আপনি নতুন লাইন পাবেন না এবং অপ্টিমাইজেশন আশা করার জন্য এটি কেবল একটি অপারেশন, কোনও ফাংশন কল নয়।


1
ক্রিয়েটিভ। তবে মনে হয় (নিশ্চিত নয়) এটি ফর্ম্যাট স্ট্রিং হিসাবে বিবেচিত হবে এবং অনুকূলিতও হতে পারে। অন্যদিকে ওপি কর্তৃক "+" পদ্ধতিটি সর্বোত্তম। বৈশিষ্ট অনুসারে অপ্টিমাইজেশন গ্যারান্টিযুক্ত: stackoverflow.com/a/288802/9399618
মীও বিড়াল 2012

4

একাধিক লাইন যুক্ত করুন: ব্যবহার @

string query = @"SELECT foo, bar
FROM table
WHERE id = 42";

মাঝখানে স্ট্রিংয়ের মান যুক্ত করুন: $ ব্যবহার করুন $

string text ="beer";
string query = $"SELECT foo {text} bar ";

একাধিক লাইনের স্ট্রিং মাঝের সাথে মান যুক্ত করে: ব্যবহার করুন $ @

string text ="Customer";
string query = $@"SELECT foo, bar
FROM {text}Table
WHERE id = 42";

3

আপনি যদি ফাঁকা স্থান / নিউলাইনগুলি না চান তবে স্ট্রিং সংযোজন কাজ করে বলে মনে হচ্ছে:

var myString = String.Format(
  "hello " + 
  "world" +
  " i am {0}" +
  " and I like {1}.",
  animalType,
  animalPreferenceType
);
// hello world i am a pony and I like other ponies.

আপনি চাইলে উপরেরটি এখানে চালাতে পারেন।


2
এই পদ্ধতির সাথে একটি (অজান্তে প্রদর্শিত) ত্রুটি হ'ল আপনি যে জায়গাগুলি চান সেখানে অন্তর্ভুক্ত করার জন্য আপনাকে খুব যত্নবান হতে হবে। আমি যতটা গ্রহণ করেছি তার চেয়ে আরও সুসংগত পদ্ধতির পরামর্শ দেব (যেমন; সর্বদা লাইনের শুরুতে)।
রাত

স্ট্রিং + স্ট্রিং ঠিক সেভাবেই ওপি শুরু হয়েছিল।
TamaMcGlinn

1

আমি জানি আমি পার্টিতে কিছুটা দেরি করেছি তবে আমি এই থ্রেডের ভবিষ্যতের পাঠকদের জন্য https://www.buildmystring.com/ সুপারিশ করতে চাই । আপনি এই সাইটটি ব্যবহার করে যে কোনও কোডকে সি # স্ট্রিং আক্ষরিক রূপান্তর করতে পারেন।


-10

আপনি এই দুটি পদ্ধতি ব্যবহার করতে পারেন:

    private static String ReverseString(String str)
    {
        int word_length = 0;
        String result = "";
        for (int i = 0; i < str.Length; i++)
        {
            if (str[i] == ' ')
            {
                result = " " + result;
                word_length = 0;
            }
            else
            {
                result = result.Insert(word_length, str[i].ToString());
                word_length++;
            }
        }
        return result;
    }
//NASSIM LOUCHANI
    public static string SplitLineToMultiline(string input, int rowLength)
    {
        StringBuilder result = new StringBuilder();
        StringBuilder line = new StringBuilder();

        Stack<string> stack = new Stack<string>(ReverseString(input).Split(' '));

        while (stack.Count > 0)
        {
            var word = stack.Pop();
            if (word.Length > rowLength)
            {
                string head = word.Substring(0, rowLength);
                string tail = word.Substring(rowLength);

                word = head;
                stack.Push(tail);
            }

            if (line.Length + word.Length > rowLength)
            {
                result.AppendLine(line.ToString());
                line.Clear();
            }

            line.Append(word + " ");
        }

        result.Append(line);
        return result.ToString();
    }

স্প্লিটলাইনটোমুটলাইনলাইন () এ, আপনি যে স্ট্রিংটি ব্যবহার করতে চান এবং সারি দৈর্ঘ্যটি আপনাকে সংজ্ঞায়িত করতে হবে, এটি খুব সহজ। ধন্যবাদ .

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