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"

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

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\"";

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";

14

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

string title = string.Format("<div>\"{0}\"</div>", "some text");

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.


7

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

string str = '"' + "How to add doublequotes" + '"';

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


2

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


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

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>";

1

Użyj albo

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

lub uniknij podwójnego cudzysłowu:

\ "
<div> \ "" + tytuł + @ "\" </div>



0

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


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\""


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>"

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;

0

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

echo "<p>Congratulations,  &#8220; ". $variable ." &#8221;!</p>";
output -> Congratulations, "Mr Jonh "!

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\";
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.