C # Как я могу заменить \ & ldquo; с & rdquo;

Для поиска переменной и ее экранирования:

const escapeStringRegexp = require('escape-string-regexp')
const name = 'foo'
db.stuff.find({name: new RegExp('^' + escapeStringRegexp(name) + '$', 'i')})   

Экранирование переменной защищает запрос от атак с помощью.. * или другого регулярного выражения.

escape-string-regexp

0
задан Dmitry Bychenko 18 January 2019 в 13:40
поделиться

5 ответов

Вы можете попробовать что-то вроде этого:

String str = "This is a \"sample\" ";
Console.WriteLine("Original string: {0}", str);
Console.WriteLine("Replaced: {0}", str.Replace('\"', '"'));
0
ответ дан Carlos Jafet Neto 18 January 2019 в 13:40
поделиться

Попробуйте это:

string line="This is a \"sample\" " ;
replaced =line.Replace(@"\", "");
0
ответ дан JJJ 18 January 2019 в 13:40
поделиться

Случай 1: Если значение в переменной line на самом деле This is a \"sample\", то вы можете сделать line.Replace("\\\"", "\"").

Если нет: \" является escape-последовательностью. в коде он отображается как \", однако при компиляции он будет отображаться как " вместо исходного \".

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

"This is a "sample" "

это This is a как одна группа, затем неизвестный токен sample, затем еще одна цитата ? или This is a "sample" все в цитате? Мы можем сделать предположение, посмотрев на контекст, но компилятор не может. Следовательно, мы используем escape-последовательность, чтобы сказать компилятору: «Я использовал этот символ двойной кавычки в качестве символа, а не закрытие / открытие строкового литерала».

См. Также: https: // en. wikipedia.org/wiki/Escape_sequences_in_C

0
ответ дан Gnbrkm41 18 January 2019 в 13:40
поделиться

Желаемый результат: это образец

Заданная строка: "This is a \"sample\""

Проблема: у вас есть экранирующие символы, защищающие двойные кавычки от интерпретации. escape-символ \ - это инструкция буквально использовать кавычку вместо того, чтобы указывать разрыв строки. Это означает, что фактическое строковое значение равно "This is a "sample"", когда используется в качестве вывода.

Ответ, удаляющий \, может работать, но он делает для вонючего кода, потому что удаление escape-символа таким способом может сделать неясным, что вы намереваетесь, и мешает вам избежать любого символа ,

Удаление " может сработать, хотя оно не позволяет использовать какие-либо кавычки, и некоторые IDE могут оставить escape-символ, чтобы испортить вам день.

Мы хотим одну конкретную цель, кавычки вокруг «образца».

            string sample = "This is a \"sample\"";
            List<string> sampleArray = sample.Split(' ').ToList(); // samplearray is now split into ["This", "is", "a", "\"sample\""]
            var x = sampleArray.FirstOrDefault(t => t == "\"sample\"");  //isolate our needed value
            if (x != null) //prevent a null reference in case something went wrong and samplearray wasnt as expected
            { 
                var index = sampleArray.IndexOf(x); //get the location of the value we just picked
                x = x.Replace("\"", string.Empty); //replace chars
                sampleArray[index] = x; //assign new value to the list

            }
            return String.Join(" ", sampleArray); //return the string joined together with spaces. 
0
ответ дан CDove 18 January 2019 в 13:40
поделиться

Поскольку кавычки используются для начала и окончания строк (они являются типом управляющего символа), вы не можете иметь кавычку в середине строки, потому что она будет заканчивать строку

string replaced = "This is a "sample" ";
/*
You can see from the syntax highlighting (red) that the string is being
detected as <This is a > and <sample> is black meaning it is detected as 
code (and will cause a syntax error)
*/

Чтобы поместить кавычку в середину строки, мы избегаем ее (экранирование означает, что она трактуется как символьный литерал вместо управляющего символа) с использованием escape-символа, который в C # является обратной косой чертой.

string line = "This is a \"sample\"";
Console.WriteLine(line);
// Output: This is a "sample"

string literalLine = @"This is a ""sample""";
Console.WriteLine(literalLine);
// Output: This is a "sample"

Символ @ в C # означает, что я хочу, чтобы это была буквальная строка (игнорируйте управляющие символы), однако кавычки по-прежнему начинаются и заканчиваются строками, поэтому для печати кавычки в литеральной строке вы пишете две из них " «(так устроен язык)

0
ответ дан Michael 18 January 2019 в 13:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: