Patrón de expresiones regulares para la letra de la casa

Estoy buscando un patrón Regex que encuentre una letra de casa.

Eks (buscando la letra d).

1. Streetname 3d, 7000 Town Country. 
2. Streetname 3 d, 7000 Town Country. 
3. Streetname 13d, 7000 Town Country. 
4. Streetname 13 d, 7000 Town Country. 

Estoy escribiendo en C#.

preguntado el 22 de mayo de 12 a las 12:05

¿Qué has probado? ¿Qué no funcionó? Protip™: uso Regexpal.com -

Probablemente no usaría una expresión regular, sino algún método de cadena para encontrar la letra más a la derecha antes de la coma. Por ejemplo, dividir usando una coma, luego encontrar la letra más a la derecha inmediatamente antes de ella. -

3 Respuestas

Alguna combinación de:

const string address = "Streetname 3d, 7000 Town Country";
string streetPart = address.Split(',')[0];
char letter = streetPart[streetPart.Length - 1];
bool isLetter = char.IsLetter(letter);
Debug.WriteLine("{0}, isLetter: {1}", letter, isLetter);

probablemente funcionará...

Salidas: d, isLetter: true

contestado el 22 de mayo de 12 a las 12:05

Creo que este patrón funciona en tus 4 casos. No pruebo el código, solo pruébalo y cuéntame.

string sPattern = "[a-zA-Z 0-9]*([a-zA-Z]),.*";
int i = 0;
foreach (string s in address)
{
     Match m = Regex.Match(s, sPattern);
     if (m.Success){
         houseLetter[i] = m.ToString(); 
     } else {
         houseLetter[i] = "Not Found";
     }
     i++;
}

contestado el 22 de mayo de 12 a las 12:05

Si está pensando que hay una expresión regular que resolverá universalmente este problema, deje de pensarlo. Con su plan, la dirección de la calle de mis padres sería

Ioakim 3rd 4242, 7000 Town Country    // "Ioakim 3rd" is the street name

Como ves, definitivamente vas a tener algún porcentaje de resultados erróneos. ¿Son sus cuatro ejemplos los únicos casos en los que necesita resultados correctos garantizados?

contestado el 22 de mayo de 12 a las 12:05

Ahora puedo acechar a tus padres. Dirección extraña por cierto. - user703016

@Cicada: Inusual, cierto. Imagina que vives en París y tienes calles con nombres de varios Luises; necesitarás algún número para diferenciar sus nombres. De ahí viene el "tercero". - Jon

Solo lo voy a usar para direcciones noruegas, y no usamos la tercera :P - Arnstein

@GoldnArms: Ese es un detalle sin importancia. Mi contrapregunta sigue en pie: ¿son esos cuatro ejemplos los únicos que necesita para garantizar un funcionamiento correcto? - Jon

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.