none
Funcion que Genera un nombre aleatorio unico y que tome los valores antes del punto RRS feed

  • Pregunta

  • saludos amigos del foro, les traigo una pregunta, como puedo hacer para que mi función funcione, así como esta funciona cuando genera un nombre de 8 caracteres pero me di con la sorpresa que el nombre puede tener menos de 8 caracteres, mi pregunta es como puedo tomar n caracteres antes del punto, me podrán ayudar por favor.

    saludos.

            //Funcion que Genera un Nombre Aleatorio Unico
            //Como se accesa: libreria.Nombre_Aleatorio()
            public static string Nombre_Aleatorio()
            {
                string result = Path.GetRandomFileName().Substring(1, 8);
                
                return result;
            }

    viernes, 15 de diciembre de 2017 8:05

Respuestas

  • hola

    Path.GetRandomFileName()

    si revisas la doc podras ver que tipo de nombre de archivo genera, pero si quieres obtener el nombre sin extension usa

    Path.GetFileNameWithoutExtension()

    no se necesita ninguna Substring o split

    saludos

    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Propuesto como respuesta Willams Morales viernes, 15 de diciembre de 2017 14:14
    • Marcado como respuesta Rudolf Heiner viernes, 15 de diciembre de 2017 16:58
    viernes, 15 de diciembre de 2017 13:59
  • Puedes ocupar otras opciones como la estructura Guid, recuperar los ticks transcurridos, o algo más entendible como la fecha y tiempo en que fue generado el archivo, según para lo que requieras:

    public static string GetFileName(string extensionName)
    {
    	return $"{Guid.NewGuid()}.{extensionName}";
    	//return $"{DateTime.Now.Ticks}.{extensionName}";
    	//return $"Backup_{DateTime.Now:yyyyMMdd_HHmmssff}.{extensionName}";
    }
    
    //Use method...
    MessageBox.Show(GetFileName("txt"));


    • Marcado como respuesta Rudolf Heiner viernes, 15 de diciembre de 2017 16:58
    viernes, 15 de diciembre de 2017 14:31
  • Buenas Rudolf,

    Varias cosas, en primer lugar, he probado Path.GetRandomFileName() y de por si de vuelve siempre me un string de 8 caracteres a la izquierda del punto, lleva como 20 minutos en un while, y siempre tiene .Lengh == 8 a la izquierda del punto.

    Viendo tu codigo, veo un problema, estas haciendo SubString(1,8) , lo cual te va a dar desde la posicion 1 hasta la 9, por tanto vas a coger el punto, los strings empiezan en la 0, una posible solucion puede ser

    string result = Path.GetRandomFileName().Substring(0, 8);


    Por otro lado, si lo que quieres es cojer siempre lo que haya a la izquierda del punto, independientemente de la longitud, puede Splitear la cadena en el '.' (punto)

    string result = Path.GetRandomFileName().Split('.')[0];

    Quedo a la espera de tus respuestas

    Atte


    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:

    • Marcado como respuesta Rudolf Heiner viernes, 15 de diciembre de 2017 16:58
    viernes, 15 de diciembre de 2017 8:44

Todas las respuestas

  • Buenas Rudolf,

    Varias cosas, en primer lugar, he probado Path.GetRandomFileName() y de por si de vuelve siempre me un string de 8 caracteres a la izquierda del punto, lleva como 20 minutos en un while, y siempre tiene .Lengh == 8 a la izquierda del punto.

    Viendo tu codigo, veo un problema, estas haciendo SubString(1,8) , lo cual te va a dar desde la posicion 1 hasta la 9, por tanto vas a coger el punto, los strings empiezan en la 0, una posible solucion puede ser

    string result = Path.GetRandomFileName().Substring(0, 8);


    Por otro lado, si lo que quieres es cojer siempre lo que haya a la izquierda del punto, independientemente de la longitud, puede Splitear la cadena en el '.' (punto)

    string result = Path.GetRandomFileName().Split('.')[0];

    Quedo a la espera de tus respuestas

    Atte


    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:

    • Marcado como respuesta Rudolf Heiner viernes, 15 de diciembre de 2017 16:58
    viernes, 15 de diciembre de 2017 8:44
  • hola

    Path.GetRandomFileName()

    si revisas la doc podras ver que tipo de nombre de archivo genera, pero si quieres obtener el nombre sin extension usa

    Path.GetFileNameWithoutExtension()

    no se necesita ninguna Substring o split

    saludos

    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Propuesto como respuesta Willams Morales viernes, 15 de diciembre de 2017 14:14
    • Marcado como respuesta Rudolf Heiner viernes, 15 de diciembre de 2017 16:58
    viernes, 15 de diciembre de 2017 13:59
  • Puedes ocupar otras opciones como la estructura Guid, recuperar los ticks transcurridos, o algo más entendible como la fecha y tiempo en que fue generado el archivo, según para lo que requieras:

    public static string GetFileName(string extensionName)
    {
    	return $"{Guid.NewGuid()}.{extensionName}";
    	//return $"{DateTime.Now.Ticks}.{extensionName}";
    	//return $"Backup_{DateTime.Now:yyyyMMdd_HHmmssff}.{extensionName}";
    }
    
    //Use method...
    MessageBox.Show(GetFileName("txt"));


    • Marcado como respuesta Rudolf Heiner viernes, 15 de diciembre de 2017 16:58
    viernes, 15 de diciembre de 2017 14:31
  • Gracias a todos, saludos!!!

    viernes, 15 de diciembre de 2017 16:59