Есть ли способ чередовать одинарные и двойные кавычки в C #, как вы можете в javascript? - PullRequest
0 голосов
/ 31 января 2019

В JavaScript я могу написать

    var s = 'He said "Hello" to me';
    or 
    var s = "don't be sad";

Другими словами, если мне нужна двойная кавычка в строке, я могу объявить строку с помощью одинарных кавычек.Если мне нужна одинарная кавычка в строке, я могу объявить строку с помощью двойных кавычек.Это супер удобно.Кто-нибудь нашел способ сделать что-то подобное в C #?

Одиночные кавычки просты, C # уже работает с встраиванием одинарных кавычек.Что касается двойных кавычек, то, по-видимому, есть 2 общих варианта.

  1. использовать символ обратной косой черты

    var s = "He said \"Hello\" to me";
    
  2. использовать одинарные кавычки и заменять ихс двойными кавычками

    var s = "He said 'Hello' to me";
    s = s.Replace("'","\"");
    

Я могу жить с вариантом 2, но лучше, тем лучше.

Ответы [ 4 ]

0 голосов
/ 31 января 2019

Вы можете определить свой метод расширения для строки, чтобы немного ускорить вашу работу и уменьшить вероятность неправильного набора чего-либо.

    public static string ApostrophesToQuotes(this string s)
    {
        return s.Replace('\'', '"');
    }

И есть еще один способ написать кавычки в строковом литерале.

var s = @"he said ""Hello"" to me");

Но вы не можете смешивать их, потому что апострофы предназначены для односимвольного литерала (2-байтовое целое в UTF-16), а кавычки - для строковых литералов (массив символов).

0 голосов
/ 31 января 2019

Javascript и C # оба основаны на C.

В C ' используется для разделения символов, а " используется для разделения строк.

В Javascript нет символовтипа, поэтому, если вы хотите символ, вы используете односимвольную строку.В качестве такового ему требуется только ", но многие люди, привыкшие к языкам в стиле C, привыкли использовать ' и предпочитали, чтобы для таких односимвольных строк использовались символы.Вскоре это привело к тому, что люди стали разрабатывать другие стили, особенно потому, что экранирование правил сделало бы это удобным, как вы говорите.

C # имеет тип символа, а также строковый тип, поэтому он оставлен наСинтаксис C в этом отношении.

Особенность синтаксиса Javascript возникла из-за особенностей его системы ввода, которая не соответствует C #, а также из-за общей истории заимствования синтаксиса из C. Это не будет работатьв C #, если дизайнеры этого хотели, без существенного усложнения различия между литералами string и char.

0 голосов
/ 31 января 2019

Я решил просто использовать одинарные кавычки и заменить их двойными кавычками.

    var s = "He said 'Hello' to me";
    s = s.Replace("'","\"");

Это немного раздражает, потому что мне нужно вставить такие вещи, как

    {"children":[{"domid":"sbsmStatusFilter","datatitle":"SBS Status","dataicon":"img/appicons/rsm4-64x64.png"},{"domid":"sbsMonitoringFilters","datatitle":"Monitoring","dataicon":"img/appicons/monitoring64x64.png"}]}

, а затем использоватьтекстовый редактор находит и заменяет все двойные кавычки одинарными кавычками, затем добавляет код замены текста, и я в конечном итоге превращаю его в

    var text3 = @"{'children':[{'domid':'sbsmStatusFilter','datatitle':'SBS Status','dataicon':'img/appicons/rsm4-64x64.png'},{'domid':'sbsMonitoringFilters','datatitle':'Monitoring','dataicon':'img/appicons/monitoring64x64.png'}]}";
    text3 = text3.Replace("'", "\"");

Не так уж и плохо.По крайней мере, текст довольно легко читается, чтобы люди могли его изменить.

0 голосов
/ 31 января 2019

Нет, нет пути.

Одинарные кавычки ' являются char переменным разделителем

Двойные кавычки " являются string переменным разделителем

Обратитесь к руководству по программированию MS string для получения дополнительной информации.

...