javascript - sirve - quitar caracteres especiales sql server
Haga coincidir los caracteres no imprimibles/no ascii y elimínelos del texto (4)
No es necesario probar, puede procesar directamente el contenido del cuadro de texto:
textBoxContent = textBoxContent.replace(/[^/x20-/x7E]+/g, '''');
donde el rango /x20-/x7E
cubre la parte imprimible de la tabla ascii.
Ejemplo con su código:
$(''.jsTextArea'').blur(function() {
this.value = this.value.replace(/[^/x20-/x7E]+/g, '''');
});
Mi JavaScript está bastante oxidado, así que cualquier ayuda con esto sería genial. Tengo el requisito de detectar caracteres no imprimibles (caracteres de control como SOH, BS, etc.) y caracteres ASCII extendidos como Ž en una cadena y eliminarlos, pero no estoy seguro de cómo escribir el código
¿Alguien puede indicarme la dirección correcta para hacer esto? Esto es lo que tengo hasta ahora:
$(document).ready(function() {
$(''.jsTextArea'').blur(function() {
var pattern = /[^/000-/031]+/gi;
var val = $(this).val();
if (pattern.test(val)) {
for (var i = 0; i < val.length; i++) {
var res = val.charAt([i]);
alert("Character " + [i] + " " + res);
}
}
else {
alert("It failed");
}
});
});
Para aquellos que tienen este problema y están buscando una solución ''arreglar todo'' ... Así es como finalmente lo solucioné:
public static string RemoveTroublesomeCharacters(string inString)
{
if (inString == null)
{
return null;
}
else
{
char ch;
Regex regex = new Regex(@"[^/u0000-/u007F]", RegexOptions.IgnoreCase);
Match charMatch = regex.Match(inString);
for (int i = 0; i < inString.Length; i++)
{
ch = inString[i];
if (char.IsControl(ch))
{
string matchedChar = ch.ToString();
inString = inString.Replace(matchedChar, string.Empty);
}
}
while (charMatch.Success)
{
string matchedChar = charMatch.ToString();
inString = inString.Replace(matchedChar, string.Empty);
charMatch = charMatch.NextMatch();
}
}
return inString;
}
Lo desglosaré un poco más en detalle para los menos experimentados:
Primero hacemos un bucle a través de cada carácter de la cadena completa y usamos el método IsControl de char para determinar si un carácter es un carácter de control o no.
Si se encuentra un carácter de control, copie ese carácter coincidente en una cadena y luego use el método Reemplazar para cambiar el carácter de control a una cadena vacía. Enjuague y repita para el resto de la cadena.
Una vez que hemos recorrido toda la cadena, utilizamos la expresión regular definida (que coincidirá con cualquier carácter que no sea un carácter de control o un carácter ascii estándar) y nuevamente reemplazaremos el carácter coincidente con una cadena vacía. Hacer esto en un bucle while significa que todo el tiempo que charMatch es verdadero, el personaje será reemplazado.
Finalmente, una vez que se eliminan todos los caracteres y hemos recorrido toda la cadena, devolvemos inString.
(Nota: todavía no he logrado averiguar cómo repoblar el TextBox con el nuevo valor de inString modificado, por lo que si alguien puede señalar cómo se puede hacer, sería genial)
Para seleccionar caracteres que no forman parte del rango ASCII básico imprimible, puede usar esta expresión regular simple:
[^ -~]+
Explicación: en los primeros 128 caracteres de la tabla ASCII , el rango imprimible comienza con el carácter de espacio y termina con una tilde. Estos son los personajes que quieres conservar. Ese rango se expresa con [ -~]
, y los caracteres que no están en ese rango se expresan con [^ -~]
. Estos son los que queremos reemplazar. Por lo tanto:
result = string.replace(/[^ -~]+/g, "");
isNonAscii
asignar un patrón (en lugar de una cadena) a la variable isNonAscii
, luego usar test()
para verificar si coincide. test()
devuelve verdadero o falso.
$(document).ready(function() {
$(''.jsTextArea'').blur(function() {
var pattern = /[^/000-/031]+/gi;
var val = $(this).val();
if (pattern.test(val)) {
alert("It matched");
}
else {
alert("It did NOT match");
}
});
});
Compruebe jsFiddle