c# - recortar - Variable de cadena de multilínea
string replace c# (5)
En C # puedes usar cadenas sin formato (@), así:
private string Logo = @"
__ __ _
/ / / / | |
/ V /___ _ _ _ __ | | ___ __ _ ___
/ // _ /| | | | ''__| | | / _ / / _` |/ _ /
| | (_) | |_| | | | |___| (_) | (_| | (_) |
/_//___/ /__,_|_| /_____//___/ /__, |/___/
__/ |
|___/ ";
En .Net (C # y VB.NET) si tengo un texto de líneas múltiples como este:
__ __ _
/ / / / | |
/ V /___ _ _ _ __ | | ___ __ _ ___
/ // _ /| | | | ''__| | | / _ / / _` |/ _ /
| | (_) | |_| | | | |___| (_) | (_| | (_) |
/_//___/ /__,_|_| /_____//___/ /__, |/___/
__/ |
|___/
¿Puedo configurar la variable de esta manera?
Dim Logo As String = ("
__ __ _
/ / / / | |
/ V /___ _ _ _ __ | | ___ __ _ ___
/ // _ /| | | | ''__| | | / _ / / _` |/ _ /
| | (_) | |_| | | | |___| (_) | (_| | (_) |
/_//___/ /__,_|_| /_____//___/ /__, |/___/
__/ |
|___/ ")
Console.WriteLine(Logo)
... en lugar de esto:
Console.WriteLine("__ __ ")
Console.WriteLine("/ / / / | | ")
Console.WriteLine(" / V /___ _ _ _ __ | | ___ __ _ ___ ")
Console.WriteLine(" / // _ /| | | | ''__| | | / _ / / _` |/ _ / ")
Console.WriteLine(" | | (_) | |_| | | | |___| (_) | (_| | (_) |")
Console.WriteLine(" /_//___/ /__,_|_| /_____//___/ /__, |/___/ ")
Console.WriteLine(" __/ | ")
Console.WriteLine(" |___/ ")
... o esto más:
Dim Logo As String = ( _
"__ __ _ " & vbNewLine & _
"/ / / / | | " & vbNewLine & _
" / V /___ _ _ _ __ | | ___ __ _ ___ " & vbNewLine & _
" / // _ /| | | | ''__| | | / _ / / _` |/ _ / " & vbNewLine & _
" | | (_) | |_| | | | |___| (_) | (_| | (_) |" & vbNewLine & _
" /_//___/ /__,_|_| /_____//___/ /__, |/___/ " & vbNewLine & _
" __/ | " & vbNewLine & _
" |___/ ")
Mas o menos...
Se hace así:
Dim logo = " " & vbCrLf & _
"__ __ " & vbCrLf & _
"/ / / / | | " & vbCrLf & _
etc.
Sí, debes usar el símbolo @
:
string t = @"t
e
s
t"
Use cadenas Verbatim.
El símbolo @
le dice al constructor de cadenas que ignore los saltos de línea.
Ver MSDN para más información. Literales de cadenas frente a cadenas Verbatim
Por ejemplo
string verbatim = @"v
e
r
batim"
Tu ejemplo
Dim Logo As String = (@"
__ __ _
/ / / / | |
/ V /___ _ _ _ __ | | ___ __ _ ___
/ // _ /| | | | ''__| | | / _ / / _` |/ _ /
| | (_) | |_| | | | |___| (_) | (_| | (_) |
/_//___/ /__,_|_| /_____//___/ /__, |/___/
__/ |
|___/ ")
Console.WriteLine(Logo)
Usted (inicialmente) marcó esto como c #, pero muestra el código VB. Para c #: use el @
especificador:
string myText =
@"line 1
line 2
line 3"
Tenga en cuenta que si no quiere una línea en blanco al comienzo de su cadena, asegúrese de poner @"
en la misma línea que la primera línea de su texto, como he hecho anteriormente.
Para VB.NET, no hay soporte directo para esto, pero puede usar el truco de esta respuesta para evitarlo:
Dim s As String = <a>line 1
line 2
line 3</a>.Value
También considere crear un recurso de cadena; puede agregar saltos de línea allí (asegúrese de usar shift-enter, según la nota en esta respuesta ), luego cargue el recurso usando algo similar a
Dim myString As String = My.Resources.MyString
Actualización para Visual Studio 2015: Obviamente vb.net fue el caso difícil aquí, pero a partir de VS2015 admite cadenas de múltiples líneas de una manera similar a las cadenas de caracteres c #, pero sin el @
precedente.
Tenga en cuenta que los terminadores de línea incrustados en la cadena son los terminadores de línea reales provistos por su editor de elección. Para VS esto es /r/n
.
Ejemplo:
Fuente here .
Para las nuevas cadenas interpoladas introducidas en VS2015 / C # 6, prefija la cadena con $@
en C #:
string multiline = $@"
[configuration]
name=Fred
age={age}";
En VB.NET, simplemente omita el @
:
Dim multiline As String = $"
[configuration]
name=Fred
age={age}"