2010-08-26 10 views

Respuesta

4

No, String.Format no soporta el operador estrella. Que había necesidad de utilizar cualquiera de concatenación de cadenas

Console.WriteLine("{0:D" + myPrecision.ToString() + "}",1); 

o anidado String.Format s

Console.WriteLine(String.Format("{{0:D{0}}}", 4), 1); 
2

Si esto es posible. Solo necesita agregar el número de precisión después del especificador de formato. Por ejemplo

Console.WriteLine("{0:D4}",1); // Outputs 0001; 

Lo que hace el modificador de precisión es específico para el tipo de formato elegido. En este caso, la D representa la salida decimal. Aquí hay un enlace a los tipos de formatos numéricos y lo que la precisión significa para cada uno de ellos.

+0

No, lo que quiero es: Console.WriteLine ("{0: D *}", 1,4); // Salidas 0001; – Sprintstar

+0

Entonces, la respuesta a su pregunta es no, @Sprintstar, C# implementa una sintaxis similar con la misma funcionalidad. –

4

formato a la cadena de formato debe hacer el truco:

var number = 1; 
var width = 4; 
Console.WriteLine(String.Format("{{0:D{0}}}", width), number); 

Se dará salida 0001.

Observe cómo {{ y }} se utilizan para escapar { y } en una cadena de formato.

+2

+1 para explicar la sintaxis de las llaves de escape. – Heinzi

0

Para formatear una cadena que se justifica a la izquierda para la longitud especificada.

int len = 20; 
string fmt = string.Format("{{0,-{0}}}", len); 
string name = string.Format(fmt, "a persons name"); 

o

name.PadRight(len); 

El resultado debe ser un nombre que se rellena por la derecha para una longitud total de 20 caracteres.

1

Mi solución es similar a cómo Qt implementa QString::arg(). Acabo de poner un marcador de posición y luego lo reemplacé con el valor de numericPrecision.

numericPrecision = "N2"; 
var summary = string.Format(
    "{0}: {1:_np_}, {2}: {3:_np_}, {4}: {5:_np_}".Replace("_np_", numericPrecision), 
    title1, value1, 
    title2, value2, 
    title3, value3);