Los caracteres permitidos son (al menos) A-Z, a-z, 0-9, ö, Ö, ä, ä, Å y alemán, letón, estonio (si corresponde) caracteres especiales? ¿Hay un método listo o tengo que hacer una lista negra (caracteres no permitidos) y expresiones regulares IsMatch? Si no está listo, ¿cómo usar la lista negra?¿Cómo saber si la cadena contiene caracteres no alfanuméricos en C# /. NET 2.0?
Respuesta
No sé cómo se clasifican los caracteres especiales de todos los idiomas, pero puede verificar si el método Char.IsLetterOrDigit
coincide con lo que desea hacer. Funciona al menos para los dígitos y letras que probé:
string test = "Aasdf345ÅÄÖåäöéÉóÓüÜïÏôÔ";
if (test.All(Char.IsLetterOrDigit)) { ... }
Los Char.IsLetterOrDigit
devuelve true de caracteres que se clasifican en Unicode como UppercaseLetter, LowercaseLetter, TitlecaseLetter, ModifierLetter, OtherLetter o DecimalDigitNumber.
¿Qué es prueba? ¿Todo? Eso no es un método de cuerda, ¿es algún tipo de método de extensión? ¿O un método LINQ? – Task
@Task 'All' es una extensión linq de cadena. Ver http://msdn.microsoft.com/en-us/library/system.string.aspx – mydogisbox
¡Ah! La sección "Métodos de extensión" de la documentación es nueva para mí, no había visto eso antes. Supongo que me he acostumbrado demasiado a encontrar todo lo que necesito en el área anterior "Propiedades" o "Métodos". ¡Gracias! – Task
Investigar char.IsLetterOrDigit(char)
.
Por ejemplo:
myString.All(c => char.IsLetterOrDigit(c));
Simplemente curioso, pero ¿por qué fue esto downvoted? Por lo que puedo decir, es una forma perfectamente válida de hacer lo que el OP pidió. – Flynn1179
Ah ... solo lo he mirado más de cerca; Nunca noté el requisito 0-9 allí.He modificado mi respuesta para usar 'IsLetterOrDigit' en lugar de' IsLetter'. – Flynn1179
Una forma abreviada de esto es 'myString.All (char.IsLetterOrDigit);' – gls123
Una lista negra de caracteres es probable bastante grande :-)
Puede utilizar la expresión regular
^[\d\p{L}]+$
para que coincida con los dígitos decimales y las letras, independientemente de secuencia de comandos
Esta expresión regular consiste en una clase de caracteres que contiene los shorthands \d
- que contiene todos los dígitos (230 en total en el BMP) y \p{L}
que contiene todos los caracteres Unicode clasificada como una "letra" (46.817 en el BMP). Dicha clase de caracteres se repite al menos una vez e incrustada entre ^
y $
- los anclajes de inicio y fin de cadena, por lo que coincide con la cadena completa.
Para algunos motores de expresiones regulares, ya que sólo está interesado en letras latinas, al parecer, se podría también utilizar
^[\d\p{Letter}]+$
Sin embargo, .NET no admite esto. La primera expresión regular mencionada anteriormente realmente capta todo lo que es un dígito o una letra en cualquier secuencia de comandos. Por lo tanto, coincidirá obedientemente con los números arábigos o hindúes y con los guiones hebreos, cirílicos y otros que no sean latinos. Dependiendo de lo que quiera, esto puede no ser apropiado.
Si eso plantea un problema, entonces no veo una mejor opción que enumerar explícitamente los caracteres que desea permitir. Sin embargo, considero peligroso suponer que el texto en un determinado idioma siempre se restringe al guión de ese idioma. Si tuviera que escribir un nombre checo o polaco en un texto en alemán, probablemente necesitaría algo más que [a-zA-ZäöüÄÖÜß]
.
+1 para \ p {option} –
¡gracias! ¿Puedes explicar cómo^[\ d \ p {L}] + $ funciona? Lo revisé desde la web, pero no pude resumirlo por completo ... –
Sería más sencillo hacer coincidir los caracteres permitidos con un retorno falso.
- 1. ¿Cómo determinar si una cadena tiene caracteres no alfanuméricos?
- 2. caracteres cheque alfanuméricos en cadena en C#
- 3. ¿Cómo puedo verificar si una cadena solo contiene caracteres alfanuméricos y guiones?
- 4. .NET Expresión regular que verifican longitud y caracteres no alfanuméricos
- 5. PHP: ¿Cómo saber si una cadena contiene algún carácter especial?
- 6. ¿Cómo elimino caracteres no alfanuméricos (espacios incluidos) de una cadena?
- 7. Caracteres no alfanuméricos en los nombres de interfaz COM/.NET
- 8. ¿Comprobar cadena si contiene solo caracteres latinos?
- 9. Cómo saber si un GraphicsPath contiene un punto en C#
- 10. ¿Cómo puedo saber si una cadena contiene caracteres multibyte en Javascript?
- 11. ¿Cómo saber si existe un archivo en C#/.NET?
- 12. ¿Cómo reconocer si una cadena contiene caracteres unicode?
- 13. Cómo comprobar los caracteres alfanuméricos
- 14. ¿Cómo saber si una cadena contiene caracteres en hebreo usando PHP?
- 15. Google usando caracteres no alfanuméricos
- 16. Eliminación de caracteres no alfanuméricos de una cadena
- 17. Cómo comprobar que la cadena contiene caracteres especiales en ruby
- 18. Cómo quitar todos los caracteres no alfanuméricos de una cadena en C++?
- 19. En C#, ¿cómo puedo saber si una propiedad es estática? (.Net CF 2.0)
- 20. Cadena C# no contiene posibles?
- 21. Cómo comprobar si una cadena contiene solo caracteres específicos
- 22. Regex - No contiene ciertos caracteres
- 23. ¿Cómo comprobar si una cadena contiene dos caracteres de asterisco?
- 24. ¿Cómo detectar si una cadena contiene caracteres especiales?
- 25. ¿Manera elegante de contar caracteres alfanuméricos en una cadena?
- 26. Compruebe si la cadena no contiene otra cadena
- 27. ¿Cómo saber si la matriz FileInfo [] contiene un archivo
- 28. si la oración contiene cadena
- 29. Compruebe si una cadena contiene una cadena en C++
- 30. cómo comprobar si la cadena contiene carácter '+'
Otro hilo que tiene respuestas para considerar http://stackoverflow.com/questions/2371780/ Podría proporcionar información adicional. –
posible duplicado de [.Net Regular Expression para que coincida con cualquier tipo de letra de cualquier idioma] (http://stackoverflow.com/questions/2949861/net-regular-expression-to-match-any-kind-of-letter- from-any-language) – GvS