una reemplazar recortar quitar extraer ejemplos caracteres cadena c# roslyn c#-6.0 string-interpolation

reemplazar - string[] c# ejemplos



Especificación de la configuración regional para la interpolación de cadenas en C#6(Roslyn CTP6) (2)

La interpolación de cadenas en C # 6 me permite escribir:

decimal m = 42.0m; string x = $"The value is {m}";

Sin embargo, un caso de uso muy común para el formato de cadenas es especificar la configuración regional utilizada para formatear los valores. Digamos que necesito usar InvariantCulture para la operación de formateo anterior, ¿cuál es la sintaxis para eso?

Esta discusión sugiere que debería poder hacer esto:

string x = INV($"The value is {m}");

Donde INV se define como

public static string INV(IFormattable formattable) { return formattable.ToString(null, System.Globalization.CultureInfo.InvariantCulture); }

Sin embargo, esto no funciona. Se compila, pero deja mi programa colgado en cmd.exe al inicio, como si klr.exe, supongo que se invoca, se cuelga (¿Error del compilador?)

Este es un proyecto de consola ASP.NET 5 en VS15 CTP 6.


Finalmente me di cuenta de esto. Como resultado, la característica del compilador se basa en dos tipos, System.FormattableString y System.Runtime.CompilerServices.FormattableStringFactory . Estos no estaban disponibles para mi proyecto; supongo que aún no pudieron haber llegado a todas las plataformas para CTP6.

Aparentemente, esto hizo que el compilador se bloqueara como se describe. Una vez que extraje el código para esos dos tipos del código CoreCLR y lo agregué a mi proyecto, mi código funciona como se esperaba.

Esto se resolvió mediante comentarios de código para las pruebas de InterpolationTests . ¡Hurra por que la fuente esté disponible :-)


Lo que tienes debería funcionar. Es la sintaxis correcta. También hay un método conveniente en la clase abstracta "System.FormattableString" que tiene el mismo efecto que el método auxiliar sugerido "INV".

using static System.FormattableString; ... string x = Invariant($"The value is {m}");