c# - सी#में मल्टीलाइन स्ट्रिंग लिटल




string shorthand (6)

आप इन दो विधियों का उपयोग कर सकते हैं:

    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();
    }

SplitLineToMultiline () में, आपको उस स्ट्रिंग को परिभाषित करने की आवश्यकता है जिसे आप उपयोग करना चाहते हैं और पंक्ति की लंबाई, यह बहुत आसान है। धन्यवाद ।

सी # में मल्टीलाइन स्ट्रिंग अक्षर बनाने का कोई आसान तरीका है?

मेरे पास अब यह है:

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

मुझे पता है कि PHP है

<<<BLOCK

BLOCK;

क्या सी # में कुछ समान है?


इसे सी # में वर्बैटिम स्ट्रिंग अक्षर कहा जाता है, और यह शाब्दिक से पहले @ डालने का मामला है। न केवल यह कई लाइनों की अनुमति देता है, बल्कि यह भागने से भी बंद हो जाता है। तो उदाहरण के लिए आप कर सकते हैं:

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

बचने का एकमात्र बिट यह है कि यदि आप एक डबल कोट चाहते हैं, तो आपको एक अतिरिक्त डबल कोट प्रतीक जोड़ना होगा:

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

यदि आप रिक्त स्थान / न्यूलाइन नहीं चाहते हैं, तो स्ट्रिंग एडिशन काम करता है:

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.

यदि आप चाहें तो उपर्युक्त here चला सकते हैं।


लोग स्ट्रिंग अक्षर के साथ भ्रमित तार क्यों रखते हैं? स्वीकार्य उत्तर एक अलग प्रश्न का एक बड़ा जवाब है; इस के लिए नहीं।

मुझे पता है कि यह एक पुराना विषय है, लेकिन मैं यहां ओपी के समान प्रश्न के साथ आया था, और यह देखना निराशाजनक है कि लोग इसे गलत तरीके से कैसे पढ़ते रहते हैं। या शायद मैं इसे गलत पढ़ रहा हूं, मुझे नहीं पता।

असल में बोलते हुए, एक स्ट्रिंग कंप्यूटर मेमोरी का एक क्षेत्र है कि, किसी प्रोग्राम के निष्पादन के दौरान, बाइट्स का अनुक्रम होता है जिसे टेक्स्ट वर्णों में मैप किया जा सकता है। दूसरी ओर, एक स्ट्रिंग शाब्दिक, स्रोत कोड का एक टुकड़ा है, अभी तक संकलित नहीं है, जो प्रोग्राम के निष्पादन के दौरान बाद में एक स्ट्रिंग को प्रारंभ करने के लिए उपयोग किए जाने वाले मान का प्रतिनिधित्व करता है।

सी # में, बयान ...

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

... एक तीन लाइन स्ट्रिंग का उत्पादन नहीं करता है लेकिन एक लाइनर; तीन तारों का एक संयोजन (प्रत्येक एक अलग शाब्दिक से शुरू किया गया) जिसमें से कोई भी एक नया लाइन संशोधक शामिल है।

ओपी क्या पूछ रहा है-कम से कम मैं उन शब्दों के साथ क्या पूछूंगा- संकलित स्ट्रिंग में, परिचय कैसे नहीं है, लाइन ब्रेक जो स्रोत कोड में पाए गए लोगों की नकल करते हैं, लेकिन स्पष्टता के लिए कितना समय तक टूटना है , संकलित स्ट्रिंग में ब्रेक पेश किए बिना स्रोत कोड में पाठ की एक पंक्ति। और बिना विस्तारित निष्पादन समय की आवश्यकता के, स्रोत कोड से आने वाले एकाधिक सबस्ट्रिंग में शामिल होने में व्यतीत किया। जावास्क्रिप्ट या सी ++ में एक मल्टीलाइन स्ट्रिंग के भीतर पिछली बैकस्लाश की तरह।

String.Join तारों के उपयोग का सुझाव, StringBuilder एस, String.Join एस या यहां तक ​​कि घोंसले हुए कार्यों स्ट्रिंग रिवर्सल के साथ कभी नहीं और क्या नहीं, मुझे लगता है कि लोग वास्तव में सवाल समझ नहीं रहे हैं। या शायद मैं इसे समझ में नहीं आता।

जहां तक ​​मुझे पता है, सी # (कम से कम पालीओलिथिक संस्करण में जो भी मैं अभी भी पिछले दशक से उपयोग कर रहा हूं) में मल्टीलाइन स्ट्रिंग अक्षरों को साफ करने के लिए एक सुविधा है जिसे निष्पादन के बजाय संकलन के दौरान हल किया जा सकता है।

हो सकता है कि मौजूदा संस्करण इसका समर्थन करें, लेकिन मैंने सोचा कि मैं स्ट्रिंग्स और स्ट्रिंग अक्षर के बीच अंतर को साझा करता हूं।


स्ट्रिंग अक्षर का उपयोग करने में समस्या यह है कि यह आपके कोड को थोड़ा " अजीब " दिख सकता है क्योंकि स्ट्रिंग में रिक्त स्थान प्राप्त करने के लिए, इसे पूरी तरह से गठबंधन नहीं किया जाना चाहिए:

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

छी।

तो मैं जिस समाधान का उपयोग करना चाहता हूं, जो आपके शेष कोड के साथ अच्छी तरह से गठबंधन रखता है:

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

और निश्चित रूप से, यदि आप सिर्फ एक SQL कथन की लाइनों को तर्कसंगत रूप से विभाजित करना चाहते हैं जैसे कि आप हैं और वास्तव में एक नई लाइन की आवश्यकता नहीं है, तो आप हमेशा Environment.NewLine लिए Environment.NewLine को बदल सकते हैं। " "


स्ट्रिंग में स्ट्रिंग अक्षर का उपयोग करने के लिए एक अन्य गॉचा है। फोर्मेट। उस स्थिति में आपको घुंघराले ब्रेसिज़ / ब्रैकेट '{' और '}' से बचने की जरूरत है।

// 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)





shorthand