Powrót karetki / wiersz w pliku zasobów .Net (App_GlobalResources)

94

Trzymam kilka tekstów w App_GlobalResources.resxpliku.

Teksty muszą być wielowierszowe i potrzebuję, aby zawierały nowe wiersze. Jednak kiedy czytam zawartość, znikają wszystkie nowe wiersze ( \r\njest drukowane, a nie jako CRLF 10 13znak kontrolny).

Wiem, że mógłbym to obejść, zamieniając ponownie \r\n(lub cokolwiek innego) z powrotem na CRLF, kiedy czytam zawartość, ale zastanawiałem się, dlaczego te wyraźnie ukierunkowane na tekst pliki resx ignorują znaki kontrolne - a CRLF jest dość ważny - i jeśli ktoś wie, czy istnieje otoczenie lub coś, co umożliwiłoby to naturalne działanie.

Alex
źródło

Odpowiedzi:

161

Do przetestowania tego użyłem VB.NET Express Edition.

W edytorze zasobów (gdzie możesz określić nazwę zasobu i zawartość ciągu) umieść treść ciągu oddzieloną znakiem Shift+ Enter.

Powiedzmy, że chcesz coś wpisać

hello  
world

Wpisz „cześć”, a następnie Shift+ Enteri „świat”.

Jeśli spojrzysz na plik Resources.Resx (który jest plikiem xml), zobaczysz, że tworzy on węzeł z atrybutem xml:space="preserve".

2. opcja

Możesz także ręcznie edytować plik Resources.resx i modyfikować zawartość w sekcji CDATA.

Załóżmy, że masz ciąg o nazwie „przykład”. Wyszukaj go w Resources.resx i zmień zawartość, aby zawierała sekcję CDATA, zamiast mieć prostą wartość.

na przykład

<data name="example">
<![CDATA[
hello
world
1
2   3
4
]]>  </data>
shahkalpesh
źródło
3
Znalazłem tę odpowiedź, szukając sposobu na wstawianie \tzakładek. Musiałem przejść do ustawień Visual Studio dla tabulatorów w plikach xml i wyłączyć opcję "tabulatory jako spacje" (gdzie zamiast tego zastępuje znaki tabulatora pewną liczbą spacji), tak żebym mógł otrzymać dosłowny znak tabulacji w moim ciągu.
Jon O
Fantastycznie ... nie wiedziałem, że to możliwe! :)
Leniel Maccaferri
Lepiej późno niż wcale ... Po tym, jak założyłem, że \ n to właściwy sposób. Tylko 50 zmian do wprowadzenia!
Andez
Uratowałem mój dzień. Dziękuję Ci!!
xyzWty
35

Użyj Shift+, Enteraby wstawić nową linię.

niebieskawy
źródło
4
kto by przypuszczał. próbował ctrl + enter, alt + enter. konsystencja MS!
Illuminati
18

Podczas korzystania z interfejsu projektanta resx

  • Jeśli faktycznie wpisujesz tekst do pliku resx, użyjesz

    Shift+Enter

    jak wskazano w innych odpowiedziach.

  • Jeśli wklejasz tekst w resx - program Visual Studio wklei tekst w tym samym formacie, w jakim już jest (w tym podziały wierszy / wielowierszowe).

Podczas otwierania pliku resx w formacie XML

(znajdź plik resx za pomocą funkcji znajdź i zamień ... po kliknięciu pliku w panelu „znajdź wyniki” VS otworzy plik resx w formacie XML)

Tutaj możesz dodać tekst, jak chcesz (w znacznikach wartości), a formatowanie zostanie zachowane.

Danield
źródło
17

Cóż, w mojej sytuacji zadziałało użycie takiego <br>tagu:

A text with a line break <br> and this goes in the second line.

Tutaj jest post z dodatkowymi informacjami: Wstawianie końca wiersza w pliku zasobów resx

Jeśli używasz aparatu widoku Razor z ASP.NET MVC, musisz użyć:

@Html.Raw(ResourceFile.ResourceString)

tak, że drukuje <br>jako HTML.

Leniel Maccaferri
źródło
10
To zadziała, jeśli twój ciąg zasobów jest przeznaczony do użycia jako HTML. Ale jeśli ciąg ma być używany w sposób inny niż HTML (na przykład jako ciąg etykiety narzędzi lub okna dialogowego komunikatu o błędzie w aplikacji komputerowej), w ciągu pojawi się po prostu znak <br>.
Peter Meyer
0

Istnieje możliwość edycji *.resxpliku za pomocą edytora tekstu, aby dodać podziały wierszy.

Możesz to zrobić nawet w Visual Studio:

  • Kliknij prawym przyciskiem myszy plik zasobów
  • Kliknij, aby Open with ...
  • Wybierz XML (Text) Editor with Encoding
  • Kliknij OK
  • Kliknij OKponownie, aby wybrać kodowanie (automatyczne wykrywanie)
  • Wyszukaj nazwę (klucz) swojego tekstu (np. „MÓJ_TEKST”)
  • Edytuj tekst wewnątrz <value>tagu. W przypadku łamania linii po prostu naciskaj Enter. Uwaga: Usuń początkowe spacje po podziale wiersza. W przeciwnym razie są one również wstawiane.

Przetestowano w programie Visual Studio 2017.

Przykład:

  <data name="MY_TEXT" xml:space="preserve">
    <value>Line 1
Line 2
Line 3</value>
  </data>
Piękno
źródło