Jak dodać cudzysłowy do ciągu znaków wewnątrz zmiennej?

168

Mam zmienną taką jak:

string title = string.empty;

Moją potrzebą jest to, że niezależnie od tego, jaki ciąg jest do niego przekazywany, muszę wyświetlić zawartość wewnątrz elementu div w podwójnych cudzysłowach. Napisałem więc coś takiego:

...
...
<div>"+ title +@"</div>
...
...

Ale jak tutaj dodać podwójne cudzysłowy? Aby wyglądał następująco:

"How to add double quotes"
ANP
źródło
Nie działa asp.net, c # vs2013 bez względu na to, jak koduję, jeśli wyglądasz i źródło strony & quot; i & # 39; są zawsze wyświetlane. Używam `Attributes.Add (... '
djack109
byłoby to pomocne: stackoverflow.com/questions/46298985/…
Siavash

Odpowiedzi:

331

Musisz od nich uciec, podwajając je (dosłowny ciąg znaków):

string str = @"""How to add doublequotes""";

Lub za pomocą zwykłego dosłownego ciągu znaków uciekasz przed nimi za pomocą \:

string str = "\"How to add doublequotes\"";
Oded
źródło
i jak go usunąć podczas zapisywania w bazie? Chcę tylko usunąć dodatkowy podwójny cudzysłów używany do ucieczki, a nie oba
Anil Purswani
1
@AnilPurswani - co? Musisz przeczytać, co oznacza ucieczka.
Oded
gdy jest używany string str = @ "" "Jak dodać podwójne cudzysłowy" ""; przechowuje "" Jak dodać podwójne cudzysłowy "" w bazie danych ..... i podczas pobierania zwraca to samo .... teraz próbuję go przekonwertować ... cóż, otrzymałem odpowiedź - str.Replace ("\\ \ "", "\" "); ...... w każdym razie dziękuję za twoją odpowiedź ....
Anil Purswani
Jeśli chcesz, aby ciąg zawierał cudzysłowy, musisz je zmienić. Nie ma to nic wspólnego z przechowywaniem ich w bazie danych - jeśli chcesz usunąć cudzysłowy przed zapisaniem w bazie danych, zrób to.
Oded
tak, właśnie próbowałem znaleźć rozwiązanie stackoverflow.com/questions/26118354/ ... i dotarłem do tego pytania, które wydaje się podobne, gdy dane zostały pobrane z bazy danych .....
Anil Purswani
46

Więc zasadniczo pytasz, jak przechowywać podwójne cudzysłowy w zmiennej łańcuchowej? Dwa rozwiązania:

var string1 = @"""inside quotes""";
var string2 = "\"inside quotes\"";

Aby być może trochę bardziej jasne, co się dzieje:

var string1 = @"before ""inside"" after";
var string2 = "before \"inside\" after";
Fredrik Mörk
źródło
14

Jeśli dobrze rozumiem twoje pytanie, może możesz spróbować tego:

string title = string.Format("<div>\"{0}\"</div>", "some text");
schwindelig
źródło
14

Jeśli musisz to robić często i chciałbyś, aby kod był bardziej przejrzysty, możesz mieć do tego metodę rozszerzenia.

To jest naprawdę oczywisty kod, ale mimo to myślę, że może się przydać i zaoszczędzić czas.

  /// <summary>
    /// Put a string between double quotes.
    /// </summary>
    /// <param name="value">Value to be put between double quotes ex: foo</param>
    /// <returns>double quoted string ex: "foo"</returns>
    public static string AddDoubleQuotes(this string value)
    {
        return "\"" + value + "\"";
    }

Następnie możesz wywołać foo.AddDoubleQuotes () lub "foo" .AddDoubleQuotes (), na każdym łańcuchu, który ci się podoba.

Mam nadzieję, że to pomoże.

codea
źródło
7

Możesz także umieścić podwójne cudzysłowy w pojedynczych cudzysłowach.

string str = '"' + "How to add doublequotes" + '"';
Yannick Turbang
źródło
6

Kolejna uwaga:

    string path = @"H:\\MOVIES\\Battel SHIP\\done-battleship-cd1.avi"; 
    string hh = string.Format("\"{0}\"", path);
    Process.Start(@"C:\Program Files (x86)\VideoLAN\VLC\vlc.exe ", hh + " ,--play");

Prawdziwą wartością hh, jaka została przekazana, będzie „H: \ MOVIES \ Battel SHIP \ done-battleship-cd1.avi”.

Gdy potrzebujesz podwójnych podwójnych literałów, użyj: @ "H: \ MOVIES \ Battel SHIP \ done-battleship-cd1.avi"; Zamiast: @ "H: \ MOVIESBattel SHIP \ done-battleship-cd1.avi"; Ponieważ pierwsze literały są przeznaczone dla nazwy ścieżki, a drugie literały dla podwójnych cudzysłowów

DR.
źródło
2

Możesz użyć &quot;zamiast ". Zostanie poprawnie wyświetlony przez przeglądarkę.

Jens
źródło
Nie działa asp.net, c # vs2013 bez względu na to, jak koduję, jeśli wyglądasz i źródło strony & quot; i & # 39; są zawsze wyświetlane. Używam `Attributes.Add (... '
djack109
2

Korzystanie z interpolacji ciągów z działającym przykładem :

var title = "Title between quotes";
var string1 = $@"<div>""{title}""</div>";  //Note the order of the $@
Console.WriteLine (string1);

Wynik

<div>"Title between quotes"</div>
WorkSmarter
źródło
2

Możesz użyć $.

Ciągi interpolowane : używane do konstruowania ciągów. Ciąg interpolowany wygląda jak ciąg szablonu, który zawiera interpolowane wyrażenia. Ciąg interpolowany zwraca ciąg, który zastępuje zawarte w nim wyrażenia interpolowane ich reprezentacjami ciągów. Ta funkcja jest dostępna w C # 6 i nowszych wersjach.

string commentor = $"<span class=\"fa fa-plus\" aria-hidden=\"true\"> {variable}</span>";
Powiedział Roohullah Allem
źródło
1

Użyj albo

& dquo;
<div> & dquo; "+ tytuł + @" & dquo; </div>

lub uniknij podwójnego cudzysłowu:

\ "
<div> \ "" + tytuł + @ "\" </div>
graham
źródło
1

W C # możesz użyć:

 string1 = @"Your ""Text"" Here";
 string2 = "Your \"Text\" Here";
Shivam Mishra
źródło
1
string doubleQuotedPath = string.Format(@"""{0}""",path);
Sunil Kumar
źródło
0

Umieść ukośnik odwrotny (\) przed cudzysłowami. To powinno działać.

Belinda
źródło
0

w języku C #, jeśli użyjemy „\”, oznacza to, że następujący symbol nie jest symbolem wbudowanym C #, który będzie używany przez programistę. więc w łańcuchu potrzebujemy podwójnych cudzysłowów, co oznacza, że ​​możemy umieścić symbol „\” przed cudzysłowami.string s = "\"Hi\""

Malathi Mals
źródło
0

"<i class=\"fa fa-check-circle\"></i>"jest używany z operatorem trójargumentowym z Eval()powiązaniem danych:

Text = '<%# Eval("bqtStatus").ToString()=="Verified" ? 
       Convert.ToString("<i class=\"fa fa-check-circle\"></i>") : 
       Convert.ToString("<i class=\"fa fa-info-circle\"></i>"
5377037
źródło
0

Pośrednia, ale łatwa do zrozumienia alternatywa dodawania cudzysłowów na początku i na końcu łańcucha -

char quote = '"';

string modifiedString = quote + "Original String" + quote;
Abhishek Poojary
źródło
0

Jeśli chcesz dodać podwójne cudzysłowy w HTML

echo "<p>Congratulations,  &#8220; ". $variable ." &#8221;!</p>";
output -> Congratulations, "Mr Jonh "!
Yogesh Sarvaiya
źródło
0

Jeśli chcesz dodać cudzysłowy do łańcucha, który również zawiera wartości dynamiczne. W tym samym miejscu zamiast CodeId [i] i CodeName [i] możesz umieścić swoje wartości dynamiczne.

data = "Test ID=" + "\"" + CodeId[i] + "\"" + " Name=" + "\"" + CodeName[i] + "\"" + " Type=\"Test\";
Ramya Prakash Rout
źródło