Creo que me he pasado y he escrito un texto demasiado largo...
Esto es solo para explicarte el funcionamiento del método String.Format(), si no estás interesado ignora este post.
1º:
La función
String.Format().
Sirve para asignar un formato específico a una cadena de texto, y devolver la cadena formateada.
Los
{n} representan tres cosas, de la tercera ya hablaremos, lo primero que representa es el índice de los argumentos que se especifican a la derecha del formato de la cadena de texto (
String.Format("Formato", arg0, arg1, arg2, etc...)), y la posición donde se debe insertar el valor de ese objeto en el formato
String.Format("{insertar arg0 aquí} Hola Mundo! {o insertar arg0 aquí}", arg0)).
En este ejemplo
String.Format("C:\{0}.{1}", "Archivo", "txt")
{0} = El primer objeto especificado en el array de argumentos ("archivo")
{1} = El segundo objeto especificado en el array de argumentos ("txt")
Es decir, que este formato:
Devolverá esta cadena de texto:
Es decir, también, que el siguiente formato seguiría devolviendo el mismo string que antes ("C:\Archivo.txt"), puesto que el formato sigue siendo el mismo a pesar de haber añadido un objeto adicional en el array de argumentos:
String.Format("C:\{0}.{1}", "Archivo", "txt", DateTime.Now())
Para tener en cuenta el o los objetos adicionales que hemos añadido en el array de argumentos, debemos referenciarlos en el formato, especificando sus índices
{n}:
String.Format("C:\{0}.{1} {2}", "Archivo", "txt", DateTime.Now())
Eso nos devolvería lo mismo que si concatenasemos el string de esta manera:
"C:\" & "Archivo" & "." & "txt" & " " & DateTime.Now().ToString()
(que cosa más fea)
Es muy sencillo, una vez que se entiende, no tiene misterio, solo son posiciones e índices...
Puedes repetir los índices
{n} en el formato cuantas veces quieras, para insertar ese valor en distintas posiciones del string.
Por ejemplo este formato:
String.Format("C:\{0}\{0}\{0}\{1}.{2}", "Carpeta", "Archivo", "txt", DateTime.Now())
Produciría el string:
C:\Carpeta\Carpeta\Carpeta\Archivo.txt
2º
El formato de los valores.
A los valores de los argumentos también les puedes asignar un formato específico, dentro del formato del string, esto es a lo que me refería con esa tercera cosa que representan los
{n}.
Lo mejor es que leas este artículo de MSDN sobre los formatos de los valores:
Custom Numeric Format Strings( no están todos los formatos que se pueden utilizar para formatear un valor, pero con eso ya tienes suficiente para empezar)
Para especificar un formato de valor, se hace de la siguiente manera
{n:FORMATO} donde "FORMATO" sería el formato que le queramos dar, entre los formatos disponibles.
En este ejemplo uso el formato "
Zero placeholder" (que puedes leer en el enlace de MSDN):
String.Format("Valor: {0:00}", 1)
Eso lo que hace es rellenar el espacio vacío a la izquierda con un "0" en caso de que el valor del argumento ("1") no ocupe ese espacio, por lo que ese formato devolverá este string:
Es practicamente lo mismo que hacerle un
padding a un string:
Dim str As String = "1".PadLeft(2, "0"c) ' 01
Te he explicado ese formato por que es el que quieres utilizar, pero hay muchísimos más.