W .NET mogę podać oba literały \r
lub \n
ciągi znaków, ale jest sposób na wstawienie czegoś takiego jak znak specjalny „nowy wiersz”, na przykład Environment.NewLine
właściwość statyczna?
c#
.net
line-breaks
Kapitan Komiks
źródło
źródło
Odpowiedzi:
Cóż, proste opcje to:
string.Format
:Konkatenacja ciągów:
Interpolacja ciągów (w C # 6 i nowszych):
Możesz też użyć \ n wszędzie i zamienić:
Zauważ, że nie możesz uczynić tego ciągiem stałym , ponieważ wartość
Environment.NewLine
będzie dostępna tylko w czasie wykonywania.źródło
Environment.NewLine
? Wręcz przeciwnie, dobrze jest go używaćJeśli chcesz mieć ciąg znaków const zawierający Environment.NewLine, możesz zrobić coś takiego:
EDYTOWAĆ
Ponieważ jest to ciąg znaków const, odbywa się to w czasie kompilacji, dlatego jest to interpretacja nowej linii przez kompilator. Nie mogę znaleźć odniesienia wyjaśniającego to zachowanie, ale mogę udowodnić, że działa zgodnie z przeznaczeniem. Skompilowałem ten kod zarówno w systemie Windows, jak i Ubuntu (z Mono), a następnie zdemontowałem i oto wyniki:
Jak widać, w systemie Windows znaki nowej linii są interpretowane jako \ r \ n, aw systemie Ubuntu jako \ n
źródło
źródło
first + Environment.NewLine + second
bardziej wydajnego i (IMO) łatwiejszego do odczytania?String.Format
to da 1 ciąg na raz (ale wewnętrznie jest trochę powolny z powodu konkatenacji specyficznych dla kultury itp.), Podczas gdy konkatenacja ciągów - 1 wynikowy + 1 tymczasowy, prawda?String.Concatenate
, co bezpośrednio buduje tylko jeden ciąg wyjściowy (IIRC, jeśli ciągi są literałami, konkatenacja jest wykonywana w kompilatorze."a"+b+"c"+d
itp.) Według wydajności są równe pojedynczemu? Lub po prostu przekonwertowanyString.Concatenate(a,b,c,d,etc)
, prawda?string.Format
w komentarzu. Łączenie ciągów nie da żadnych tymczasowych ciągów, ponieważ kompilator wywołastring.Concat(first, Environment.NewLine, second)
.Jeszcze jeden sposób wygodnego umieszczenia Environment.NewLine w ciągu formatu. Chodzi o to, aby utworzyć metodę rozszerzającą ciąg, która formatuje ciąg w zwykły sposób, ale także zastępuje {nl} w tekście przez Environment.NewLine
Stosowanie
Kod
Uwaga
Jeśli chcesz, aby ReSharper podświetlał twoje parametry, dodaj atrybut do powyższej metody
[StringFormatMethod ("format")]
Ta implementacja jest oczywiście mniej wydajna niż tylko String.Format
Może kogoś, kto byłby zainteresowany tym pytaniem, byłby również zainteresowany kolejnym pytaniem: Nazwane formatowanie ciągów w C #
źródło
źródło
źródło
Environment.NewLine
- zobacz inne odpowiedzi.const string
nowsze wersje .net pozwalają na użycie znaku $ przed literałem, co pozwala na użycie zmiennych wewnątrz, jak poniżej:
źródło
Jeśli naprawdę chcesz, aby ciąg New Line był stałą, możesz to zrobić:
Użytkownik słowa kluczowego readonly w C # oznacza, że ta zmienna może być przypisana tylko raz. Dokumentację na ten temat znajdziesz tutaj . Pozwala na deklarację stałej zmiennej, której wartość nie jest znana do czasu wykonania.
źródło
Bardziej podoba mi się „pythonowy sposób”
źródło
Jeśli pracujesz z aplikacją internetową, możesz spróbować tego.
źródło
Jeśli rozumiem pytanie: para,
"\r\n"
aby uzyskać tę nową linię poniżej wtextbox
. Mój przykład zadziałał -Typowa odpowiedź może być
s1
s2
wtext box
przy użyciu zdefiniowanego stylu typu.źródło
Tutaj Environment.NewLine nie działa.
I umieścić „ < br / > ” na sznurku i pracował.
Dawny:
źródło