/// <summary> /// Este metodo inserta en una lista de contactos los que saca del archivo info.txt.txt /// </summary> public void LeerContactos() { int counter = 0; string line; Contacto contacto; string nombre = ""; int edad = 0; string nif = ""; string ruta = "ControlesUsuario.Assets.Info.txt.txt"; var assembly = typeof(MainPage).GetTypeInfo().Assembly; Stream stream = assembly.GetManifestResourceStream(ruta); //Leer el fichero y mostrarlo línea a línea. System.IO.StreamReader fichero = new System.IO.StreamReader(stream); /*Bucle encargado de leer el fichero, ir almacenando los valores correspondientes * a nombre, edad y nif e ir almacenándolos en un nuevo contacto.*/ while ((line = fichero.ReadLine()) != null) { counter++; switch (counter) { case 1: nombre = line; break; case 2: int.TryParse(line, out edad); break; case 3: nif = line; contacto = new Contacto(nombre, edad, nif); contactos.Add(contacto); counter = 0; break; } } }
/// <summary> /// Metodo que comprueba si el nombre del contacto tiene alguna coincidencia con el filtro de busqueda. /// </summary> /// <param name="contacto">El contacto a analizar.</param> /// <param name="filtro">La cadena que queremos usar como filtro. Puede estar vacia. En ese caso, devolveremos siempre true.</param> /// <returns> Devuelve true si se ha encontrado coincidencia, devuelve false si no la encuentra.</returns> public Boolean comprobarNombre(Contacto contacto, string filtro) { Boolean ok = false; Regex rgx = new Regex("%", RegexOptions.IgnoreCase); matches = rgx.Matches(filtro); /// Primero tenemos que controlar que en el filtro no hemos introducido mas de un %. if (matches.Count > 1) { inputControl(EntryBuscarPorNombre, "No puede indicar más de un % en una busqueda."); } else { /// Si no se ha escrito nada en el patron de busqueda, o solo se ha escrito %... if (filtro.Trim().Equals("") || filtro.Trim().Equals("%")) { if (EntryEdadMinima.Text.Trim().Length > 0 && EntryEdadMaxima.Text.Trim().Length == 0) { ok = comprobarEdad(contacto, EntryEdadMinima.Text.Trim(), true); } else if (EntryEdadMinima.Text.Trim().Length == 0 && EntryEdadMaxima.Text.Trim().Length > 0) { ok = comprobarEdad(contacto, EntryEdadMaxima.Text.Trim(), false); } else if (EntryEdadMinima.Text.Trim().Length > 0 && EntryEdadMaxima.Text.Trim().Length > 0) { ok = comprobarEdad(contacto, EntryEdadMinima.Text.Trim(), EntryEdadMaxima.Text.Trim()); } else { ok = true; } } /// Si el ultimo caracter es %... else if (filtro.Substring(filtro.Length - 1).Equals("%")) { /// Quitamos el caracter % para poder usarlo como patron de busqueda. filtro = filtro.Replace("%", ""); rgx = new Regex(String.Format("^" + filtro + ".*"), RegexOptions.IgnoreCase); matches = rgx.Matches(contacto.Nombre); /// Si encuentra alguna coincidencia, devolvemos true siempre y cuando la edad tambien coincida. if (matches.Count > 0 && EntryEdadMinima.Text.Trim().Length > 0 && EntryEdadMaxima.Text.Trim().Length == 0) { ok = comprobarEdad(contacto, EntryEdadMinima.Text.Trim(), true); } else if (matches.Count > 0 && EntryEdadMinima.Text.Trim().Length == 0 && EntryEdadMaxima.Text.Trim().Length > 0) { ok = comprobarEdad(contacto, EntryEdadMaxima.Text.Trim(), false); } else if (matches.Count > 0 && EntryEdadMinima.Text.Trim().Length > 0 && EntryEdadMaxima.Text.Trim().Length > 0) { ok = comprobarEdad(contacto, EntryEdadMinima.Text.Trim(), EntryEdadMaxima.Text.Trim()); } else if (matches.Count > 0) { ok = true; } } /// Si en el patron de busqueda no hemos puesto como ultimo caracter un %... else { rgx = new Regex("^" + filtro + "$", RegexOptions.IgnoreCase); matches = rgx.Matches(contacto.Nombre); /// Si encuentra alguna coincidencia, devolvemos true siempre y cuando la edad tambien coincida. if (matches.Count > 0 && EntryEdadMinima.Text.Trim().Length > 0 && EntryEdadMaxima.Text.Trim().Length == 0) { ok = comprobarEdad(contacto, EntryEdadMinima.Text.Trim(), true); } else if (matches.Count > 0 && EntryEdadMinima.Text.Trim().Length == 0 && EntryEdadMaxima.Text.Trim().Length > 0) { ok = comprobarEdad(contacto, EntryEdadMaxima.Text.Trim(), false); } else if (matches.Count > 0 && EntryEdadMinima.Text.Trim().Length > 0 && EntryEdadMaxima.Text.Trim().Length > 0) { ok = comprobarEdad(contacto, EntryEdadMinima.Text.Trim(), EntryEdadMaxima.Text.Trim()); } else if (matches.Count > 0) { ok = true; } } } return(ok); }