আমি কি একটি সি # স্ট্রিংয়ের মানটিকে একটি পালিয়ে যাওয়া স্ট্রিং আক্ষরিক রূপান্তর করতে পারি?


195

সি # তে, আমি কি কোনও স্ট্রিংয়ের মানকে স্ট্রিংকে আক্ষরিক রূপান্তর করতে পারি, কোডটি যেভাবে দেখব? আমি ট্যাব, নিউলাইন ইত্যাদির সাথে তাদের পালানোর ক্রমগুলি প্রতিস্থাপন করতে চাই।

যদি এই কোড:

Console.WriteLine(someString);

সৃষ্টি করে:

Hello
World!

আমি এই কোডটি চাই:

Console.WriteLine(ToLiteral(someString));

উৎপাদন করা:

\tHello\r\n\tWorld!\r\n

উত্তর:


180

আমি এটি খুঁজে পেয়েছি:

private static string ToLiteral(string input)
{
    using (var writer = new StringWriter())
    {
        using (var provider = CodeDomProvider.CreateProvider("CSharp"))
        {
            provider.GenerateCodeFromExpression(new CodePrimitiveExpression(input), writer, null);
            return writer.ToString();
        }
    }
}

এই কোড:

var input = "\tHello\r\n\tWorld!";
Console.WriteLine(input);
Console.WriteLine(ToLiteral(input));

উত্পাদন:

    Hello
    World!
"\tHello\r\n\tWorld!"

1
গুগল থেকে বিষয়টি সবেমাত্র পাওয়া গেছে। এটি সর্বোত্তম হতে হবে, স্টেটগুলিকে পুনর্নবীকরণের কোনও অর্থ নেই যা। নেট আমাদের পক্ষে করতে পারে
অ্যান্ডি মরিস

16
খুব ভাল, তবে সচেতন থাকুন যে দীর্ঘতর স্ট্রিংয়ের জন্য এটি অপারেটরগুলি, নিউলাইনগুলি এবং ইনডেন্টেশন sertোকাবে। আমি এটি বন্ধ করার উপায় খুঁজে পাইনি।
টিমউই

2
বিপরীতের কি হবে? যদি আপনার কাছে পাঠ্যসূচীর সাথে পাল্লার সিকোয়েন্সগুলি অন্তর্ভুক্ত করে কোনও ফাইল থাকে তবে বিশেষ চরিত্রটি তার এসকি কোড সহ পালিয়ে যায়? কিভাবে একটি কাঁচা সংস্করণ উত্পাদন করতে?
লুসিয়ানো

1
যদি আপনি চালনা করেন: অকার্যকর মেইন () {কনসোল.উরাইটলাইন (টোলিটালাল ("পরীক্ষা \" \ '\\\ 0 \ a \ বি \ ফ \ এন \ আর \ টি \ ভি \ উআআআআআআআলাহ ");} আপনি লক্ষ্য করবেন যে এটি কয়েকজন পালিয়ে যাওয়ার জন্য যত্ন নেয় না R রনি ওভারবি ইঙ্গিত করলেন the f, অন্যরা হলেন \ a এবং \ b
Costa

4
এটিকে আক্ষরিক আউটপুট ( @"...") আউটপুট করার কোনও উপায় আছে কি ?
rookie1024

38

Regex.Ecreen (স্ট্রিং) সম্পর্কে কী ?

রেগেক্স.এস্কেপ তাদের ন্যূনতম কোডগুলি প্রতিস্থাপন করে অক্ষরের একটি সংক্ষিপ্ত সেট (\, *, +,?, |, ^, [, (,)), Space, $,।, # এবং সাদা স্থান) থেকে পালিয়ে যায়।


6
কেন এটি নীচে রয়েছে তা +1 ধারণা নেই। অন্যান্য উত্তরগুলি খুব ভার্জোজ এবং পুনর্নবীকরণ চাকার মতো দেখতে
অ্যাড্রিয়ানো কার্নেরিও

39
এটি ওপি যা চাইছে তা নয়। এটি কোনও স্ট্রিংকে আক্ষরিক ফিরিয়ে দেয় না, এটি রেগেক্সের বিশেষ অক্ষরগুলি পালিয়ে যাওয়ার সাথে একটি স্ট্রিং দেয়। এটি রূপান্তরিত Hello World?হবে Hello World\?তবে এটি একটি অবৈধ স্ট্রিং আক্ষরিক।
এথিয়াওস

1
আমি @atheaos এর সাথে একমত, এটি একটি খুব পৃথক প্রশ্নের দুর্দান্ত উত্তর।
হাইপুমান

5
+1 যদিও এটি ওপি-র প্রশ্নের পুরোপুরি উত্তর দেয় না আমি যখন এই প্রশ্নটি পেলাম তখন এটিই আমি (এবং তাই আমি সন্দেহ করি অন্যরাও) খুঁজছিলাম। :)
গ্যাজবি

এটি প্রয়োজন মতো কাজ করবে না। রেজেক্স বিশেষ অক্ষরগুলি এক নয়। উদাহরণস্বরূপ এটি \ n এর জন্য কাজ করবে, তবে যখন আপনার একটি স্থান থাকবে, তখন এটি "\" তে রূপান্তরিত হবে যা সি # যা করবে না ...
আর্নেস্তো

24

সম্পাদনা: stringএস এবং charএস এর জন্য সমস্ত পালানোর ক্রম সহ আরও কাঠামোগত পদ্ধতি ।
ইউনিকোড অক্ষরগুলিকে তাদের আক্ষরিক সমতুল্য করে না। ডিমও রান্না করে না।

public class ReplaceString
{
    static readonly IDictionary<string, string> m_replaceDict 
        = new Dictionary<string, string>();

    const string ms_regexEscapes = @"[\a\b\f\n\r\t\v\\""]";

    public static string StringLiteral(string i_string)
    {
        return Regex.Replace(i_string, ms_regexEscapes, match);
    }

    public static string CharLiteral(char c)
    {
        return c == '\'' ? @"'\''" : string.Format("'{0}'", c);
    }

    private static string match(Match m)
    {
        string match = m.ToString();
        if (m_replaceDict.ContainsKey(match))
        {
            return m_replaceDict[match];
        }

        throw new NotSupportedException();
    }

    static ReplaceString()
    {
        m_replaceDict.Add("\a", @"\a");
        m_replaceDict.Add("\b", @"\b");
        m_replaceDict.Add("\f", @"\f");
        m_replaceDict.Add("\n", @"\n");
        m_replaceDict.Add("\r", @"\r");
        m_replaceDict.Add("\t", @"\t");
        m_replaceDict.Add("\v", @"\v");

        m_replaceDict.Add("\\", @"\\");
        m_replaceDict.Add("\0", @"\0");

        //The SO parser gets fooled by the verbatim version 
        //of the string to replace - @"\"""
        //so use the 'regular' version
        m_replaceDict.Add("\"", "\\\""); 
    }

    static void Main(string[] args){

        string s = "here's a \"\n\tstring\" to test";
        Console.WriteLine(ReplaceString.StringLiteral(s));
        Console.WriteLine(ReplaceString.CharLiteral('c'));
        Console.WriteLine(ReplaceString.CharLiteral('\''));

    }
}

এটি সমস্ত পালানোর ক্রম নয়;)
TcKs

1
উপরের সমাধানের চেয়ে আরও ভাল কাজ করে - এবং অন্যান্য অব্যাহতি সিকোয়েন্সগুলি সহজেই যুক্ত করা যায়।
আরনো পিটারস

গৃহীত উত্তরে ভারব্যাটিম আমাকে বোনার চালাচ্ছিল। এটি আমার উদ্দেশ্যে 100% কাজ করে। সাথে রেগেক্স প্রতিস্থাপন করা হয়েছে @"[\a\b\f\n\r\t\v\\""/]"এবং এর m_replaceDict.Add("/", @"\/");জন্য যুক্ত করা হয়েছে JSON
আকর্ষণীয়-নাম এখানে

এছাড়াও, আপনি যদি এটিগুলি চান তবে আপনাকে এটিতে বদ্ধ দাবী যুক্ত করতে হবে।
আকর্ষণীয়-নাম এখানে

19
public static class StringHelpers
{
    private static Dictionary<string, string> escapeMapping = new Dictionary<string, string>()
    {
        {"\"", @"\\\"""},
        {"\\\\", @"\\"},
        {"\a", @"\a"},
        {"\b", @"\b"},
        {"\f", @"\f"},
        {"\n", @"\n"},
        {"\r", @"\r"},
        {"\t", @"\t"},
        {"\v", @"\v"},
        {"\0", @"\0"},
    };

    private static Regex escapeRegex = new Regex(string.Join("|", escapeMapping.Keys.ToArray()));

    public static string Escape(this string s)
    {
        return escapeRegex.Replace(s, EscapeMatchEval);
    }

    private static string EscapeMatchEval(Match m)
    {
        if (escapeMapping.ContainsKey(m.Value))
        {
            return escapeMapping[m.Value];
        }
        return escapeMapping[Regex.Escape(m.Value)];
    }
}

1
অভিধানের প্রথম মানটিতে 3 টি ব্যাকস্ল্যাশ এবং দুটি স্পিচ চিহ্ন রয়েছে কেন?
জেমস ইয়োমন

উত্তম উত্তর, @ জেমসইউম্যান এটি কারণ রেইগেক্স প্যাটার্নটি এড়ানো দরকার।
আলী মুসাবি খেরাদ

18

চেষ্টা করে দেখুন:

var t = HttpUtility.JavaScriptStringEncode(s);

কাজ করে না. আমার কাছে যদি "abc \ n123" (উদ্ধৃতি, 8 টি অক্ষর ছাড়াই) থাকে তবে আমি "abc" + \ n + "123" (7 টি অক্ষর) চাই। পরিবর্তে এটি "abc" + "\\" + "\ n123" (9 টি অক্ষর) উত্পাদন করে। লক্ষ্য করুন স্ল্যাশ দ্বিগুণ হয়ে গেছে এবং এরপরে "\ n" এর দুটি স্ট্রাক্ট হিসাবে একটি স্ট্রিং আক্ষরিক রয়েছে, পালানো চরিত্রটি নয়।
পল

2
@ পল আপনি যা চান তা প্রশ্নটি যা জিজ্ঞাসা করছে তার বিপরীত। এটি আপনার বিবরণ অনুযায়ী, প্রশ্নের উত্তর, সেইজন্য এবং না হবে।
ফান্ড মনিকার লসুইট


18

ইউনিকোড এবং এএসসিআইআই অ মুদ্রনযোগ্য অক্ষরগুলি পালিয়ে যাওয়া সহ পুরোপুরি কার্যকরী বাস্তবায়ন। হলগ্রিমের উত্তরের মতো "+" চিহ্নগুলি sertোকানো হয় না

    static string ToLiteral(string input) {
        StringBuilder literal = new StringBuilder(input.Length + 2);
        literal.Append("\"");
        foreach (var c in input) {
            switch (c) {
                case '\'': literal.Append(@"\'"); break;
                case '\"': literal.Append("\\\""); break;
                case '\\': literal.Append(@"\\"); break;
                case '\0': literal.Append(@"\0"); break;
                case '\a': literal.Append(@"\a"); break;
                case '\b': literal.Append(@"\b"); break;
                case '\f': literal.Append(@"\f"); break;
                case '\n': literal.Append(@"\n"); break;
                case '\r': literal.Append(@"\r"); break;
                case '\t': literal.Append(@"\t"); break;
                case '\v': literal.Append(@"\v"); break;
                default:
                    // ASCII printable character
                    if (c >= 0x20 && c <= 0x7e) {
                        literal.Append(c);
                    // As UTF16 escaped character
                    } else {
                        literal.Append(@"\u");
                        literal.Append(((int)c).ToString("x4"));
                    }
                    break;
            }
        }
        literal.Append("\"");
        return literal.ToString();
    }

2
Char.GetUnicodeCategory(c) == UnicodeCategory.Controlএটি থেকে পালাতে হবে কিনা তা স্থির করার জন্য আপনার ব্যবহার করা উচিত , বা যে লোকেরা এএসসিআইআই কথা বলেন না তারা খুব খুশি হবেন না।
ডিয়ারচাও

এটি পরিস্থিতির উপর নির্ভর করে যদি আপনার ফলস্বরূপ স্ট্রিং ইউনিকোড সমর্থনকারী পরিবেশে ব্যবহৃত হবে বা না।
হাসিমুখে

আমি input = input ?? string.Empty;পদ্ধতির প্রথম লাইন হিসাবে যুক্ত করেছি যাতে আমি নাল রেফারেন্স ব্যতিক্রমের পরিবর্তে পাস করতে nullএবং ফিরে পেতে পারি ""
অ্যান্ডি

খুশী হলাম। এনকোলেজিং কোটগুলি পরিবর্তন করুন 'এবং এখন পাইথন আপনাকে যা দিয়ে বক্স থেকে বের করে দিয়েছে repr(a_string):)।
z33k

17

হলগ্রিমের উত্তরটি দুর্দান্ত, তবে "+", নিউলাইন এবং ইনডেন্ট সংযোজনগুলি আমার জন্য কার্যকারিতা ভঙ্গ করেছিল। এটির চারপাশের একটি সহজ উপায়:

private static string ToLiteral(string input)
{
    using (var writer = new StringWriter())
    {
        using (var provider = CodeDomProvider.CreateProvider("CSharp"))
        {
            provider.GenerateCodeFromExpression(new CodePrimitiveExpression(input), writer, new CodeGeneratorOptions {IndentString = "\t"});
            var literal = writer.ToString();
            literal = literal.Replace(string.Format("\" +{0}\t\"", Environment.NewLine), "");
            return literal;
        }
    }
}

দুর্দান্ত কাজ করে। return literalএটিকে আরও পঠনযোগ্য করার জন্য আমি এর আগে একটি লাইনও যুক্ত করেছি : literal = literal.Replace("\\r\\n", "\\r\\n\"+\r\n\"");
বব

কার্যকারিতা literal = literal.Replace("/", @"\/");জন্য এটি যোগ JSON
আকর্ষণীয়-নাম এখানে

এটি সরাসরি 100% এগিয়ে এবং একমাত্র সঠিক উত্তর! অন্যান্য সমস্ত উত্তর হয় প্রশ্নটি বুঝতে পারেনি বা চাকাটি পুনরায় আবিষ্কার করেছে।
bytecode77

দুঃখের বিষয়, এটি ডটনেট কোরের অধীনে কাজ করতে পারে না। এর চেয়ে উত্তম উত্তর কারও আছে?
sk

8

স্মাইলিবারের উত্তরের জন্য এখানে কিছুটা উন্নতি করা হয়েছে, এটি সমস্ত নো-এএসসিআইআই অক্ষরগুলি এড়াতে পারবেনা তবে কেবল এগুলি সত্যই প্রয়োজন।

using System;
using System.Globalization;
using System.Text;

public static class CodeHelper
{
    public static string ToLiteral(this string input)
    {
        var literal = new StringBuilder(input.Length + 2);
        literal.Append("\"");
        foreach (var c in input)
        {
            switch (c)
            {
                case '\'': literal.Append(@"\'"); break;
                case '\"': literal.Append("\\\""); break;
                case '\\': literal.Append(@"\\"); break;
                case '\0': literal.Append(@"\0"); break;
                case '\a': literal.Append(@"\a"); break;
                case '\b': literal.Append(@"\b"); break;
                case '\f': literal.Append(@"\f"); break;
                case '\n': literal.Append(@"\n"); break;
                case '\r': literal.Append(@"\r"); break;
                case '\t': literal.Append(@"\t"); break;
                case '\v': literal.Append(@"\v"); break;
                default:
                    if (Char.GetUnicodeCategory(c) != UnicodeCategory.Control)
                    {
                        literal.Append(c);
                    }
                    else
                    {
                        literal.Append(@"\u");
                        literal.Append(((ushort)c).ToString("x4"));
                    }
                    break;
            }
        }
        literal.Append("\"");
        return literal.ToString();
    }
}

8

আকর্ষণীয় প্রশ্ন।

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

  • - '- একক উদ্ধৃতি, অক্ষর অক্ষরের জন্য প্রয়োজনীয়
  • \ "- ডাবল উদ্ধৃতি, স্ট্রিং লেটারেলের জন্য প্রয়োজনীয়
  • \ - ব্যাকস্ল্যাশ
  • \ 0 - ইউনিকোড অক্ষর 0 0
  • - একটি - সতর্কতা (অক্ষর))
  • \ বি - ব্যাকস্পেস (অক্ষর 8)
  • \ চ - ফর্ম ফিড (চরিত্র 12)
  • \ n - নতুন লাইন (অক্ষর 10)
  • - r - ক্যারেজ রিটার্ন (অক্ষর 13)
  • - t - অনুভূমিক ট্যাব (অক্ষর 9)
  • \ v - উল্লম্ব উক্তি (অক্ষর 11)
  • xx ইউএক্সএক্সএক্সএক্সএক্স - হেক্স ভ্যালু এক্সএক্সএক্সএক্সএক্স সহ চরিত্রের জন্য ইউনিকোড এস্কেপ ক্রম
  • \ xn [n] [n] [n] - হেক্স মান nnnn (able uxxxx এর পরিবর্তনশীল দৈর্ঘ্যের সংস্করণ) সহ চরিত্রের জন্য ইউনিকোড এস্কেপ ক্রম
  • \ ইউএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্স - হেক্স ভ্যালু এক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএর জন্য চরিত্রের জন্য ইউনিকোড এস্কেপ ক্রম (সারোগেট উত্পন্ন করার জন্য)

এই তালিকাটি সি # তে পাওয়া যেতে পারে প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী কোন চরিত্রের অব্যাহতি ক্রমগুলি উপলব্ধ?


2
এই লিঙ্কটি আর কাজ করে না, কেন কেবলমাত্র লিঙ্ক-উত্তর উত্তর নিরুত্সাহিত করা হয় তার একটি পাঠ্যপুস্তকের উদাহরণ।
জেমস

খুব সত্য, @ জেমস, তবে জেমি টেলসকে ধন্যবাদ তথ্য আবারও পাওয়া যায়: +1:
নেলসন রেইস

5

রোজলিনের মাইক্রোসফ্টে এর জন্য একটি পদ্ধতি রয়েছে n নুগেটে কোডএনালাইসিস.সিএসআরপ প্যাকেজ:

    private static string ToLiteral(string valueTextForCompiler)
    {
        return Microsoft.CodeAnalysis.CSharp.SymbolDisplay.FormatLiteral(valueTextForCompiler, false);
    }

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


3

JSON কনভেনশনগুলি যদি আপনি অব্যাহতি পেতে চান এমন অনির্বাচিত স্ট্রিংগুলির জন্য পর্যাপ্ত হয় এবং আপনি ইতিমধ্যে Newtonsoft.Jsonআপনার প্রকল্পে ব্যবহার করেন (এটির বেশ বড় ওভারহেড রয়েছে) আপনি এই প্যাকেজটি নীচের মতো ব্যবহার করতে পারেন:

using System;
using Newtonsoft.Json;

public class Program
{
    public static void Main()
    {
    Console.WriteLine(ToLiteral( @"abc\n123") );
    }

    private static string ToLiteral(string input){
        return JsonConvert.DeserializeObject<string>("\"" + input + "\"");
    }
}

2
public static class StringEscape
{
  static char[] toEscape = "\0\x1\x2\x3\x4\x5\x6\a\b\t\n\v\f\r\xe\xf\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\"\\".ToCharArray();
  static string[] literals = @"\0,\x0001,\x0002,\x0003,\x0004,\x0005,\x0006,\a,\b,\t,\n,\v,\f,\r,\x000e,\x000f,\x0010,\x0011,\x0012,\x0013,\x0014,\x0015,\x0016,\x0017,\x0018,\x0019,\x001a,\x001b,\x001c,\x001d,\x001e,\x001f".Split(new char[] { ',' });

  public static string Escape(this string input)
  {
    int i = input.IndexOfAny(toEscape);
    if (i < 0) return input;

    var sb = new System.Text.StringBuilder(input.Length + 5);
    int j = 0;
    do
    {
      sb.Append(input, j, i - j);
      var c = input[i];
      if (c < 0x20) sb.Append(literals[c]); else sb.Append(@"\").Append(c);
    } while ((i = input.IndexOfAny(toEscape, j = ++i)) > 0);

    return sb.Append(input, j, input.Length - j).ToString();
  }
}

2

থেকে ToVerbatim যোগ আমার প্রয়াস Hallgrim এর উপরে গৃহীত উত্তর:

private static string ToLiteral(string input)
{
    using (var writer = new StringWriter())
    {
        using (var provider = CodeDomProvider.CreateProvider("CSharp"))
        {
            provider.GenerateCodeFromExpression(new CodePrimitiveExpression(input), writer, new CodeGeneratorOptions { IndentString = "\t" });
            var literal = writer.ToString();
            literal = literal.Replace(string.Format("\" +{0}\t\"", Environment.NewLine), "");           
            return literal;
        }
    }
}

private static string ToVerbatim( string input )
{
    string literal = ToLiteral( input );
    string verbatim = "@" + literal.Replace( @"\r\n", Environment.NewLine );
    return verbatim;
}

1

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

  provider.GenerateCodeFromExpression(new CodePrimitiveExpression(input), writer, null);
  var literal = writer.ToString();
  var r2 = new Regex(@"\"" \+.\n[\s]+\""", RegexOptions.ECMAScript);
  literal = r2.Replace(literal, "");
  return literal;

-1

আমি আমার নিজস্ব বাস্তবায়ন জমা দিচ্ছি, যা nullমানগুলি পরিচালনা করে এবং অ্যারে লুকিং সারণী, ম্যানুয়াল হেক্স রূপান্তরকরণ এবং switchবিবৃতি এড়িয়ে যাওয়ার কারণে আরও পারফরম্যান্স হওয়া উচিত ।

using System;
using System.Text;
using System.Linq;

public static class StringLiteralEncoding {
  private static readonly char[] HEX_DIGIT_LOWER = "0123456789abcdef".ToCharArray();
  private static readonly char[] LITERALENCODE_ESCAPE_CHARS;

  static StringLiteralEncoding() {
    // Per http://msdn.microsoft.com/en-us/library/h21280bw.aspx
    var escapes = new string[] { "\aa", "\bb", "\ff", "\nn", "\rr", "\tt", "\vv", "\"\"", "\\\\", "??", "\00" };
    LITERALENCODE_ESCAPE_CHARS = new char[escapes.Max(e => e[0]) + 1];
    foreach(var escape in escapes)
      LITERALENCODE_ESCAPE_CHARS[escape[0]] = escape[1];
  }

  /// <summary>
  /// Convert the string to the equivalent C# string literal, enclosing the string in double quotes and inserting
  /// escape sequences as necessary.
  /// </summary>
  /// <param name="s">The string to be converted to a C# string literal.</param>
  /// <returns><paramref name="s"/> represented as a C# string literal.</returns>
  public static string Encode(string s) {
    if(null == s) return "null";

    var sb = new StringBuilder(s.Length + 2).Append('"');
    for(var rp = 0; rp < s.Length; rp++) {
      var c = s[rp];
      if(c < LITERALENCODE_ESCAPE_CHARS.Length && '\0' != LITERALENCODE_ESCAPE_CHARS[c])
        sb.Append('\\').Append(LITERALENCODE_ESCAPE_CHARS[c]);
      else if('~' >= c && c >= ' ')
        sb.Append(c);
      else
        sb.Append(@"\x")
          .Append(HEX_DIGIT_LOWER[c >> 12 & 0x0F])
          .Append(HEX_DIGIT_LOWER[c >>  8 & 0x0F])
          .Append(HEX_DIGIT_LOWER[c >>  4 & 0x0F])
          .Append(HEX_DIGIT_LOWER[c       & 0x0F]);
    }

    return sb.Append('"').ToString();
  }
}

-7

কোড:

string someString1 = "\tHello\r\n\tWorld!\r\n";
string someString2 = @"\tHello\r\n\tWorld!\r\n";

Console.WriteLine(someString1);
Console.WriteLine(someString2);

আউটপুট:

    Hello
    World!

\tHello\r\n\tWorld!\r\n

এই কমান্ডের সাহায্যে আপনি চান কি?


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