verwendetes Datenbanksystem: Oracle 9i
Hallo Leute
ich schlage mich schon seit längerer Zeit mit folgendem Problem rum:
Ich bekomme Inputdaten aus aller Welt - Sprich die verwendeten Zeichen könnten unterschiedlicher nicht sein. Nun möchte ich alle Zeichen die erlaubt sind in meiner Datenbank ablegen.
Dazu habe ich folgende Klasse geschrieben:
using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
namespace com.comfone.HDSClient.Utils
{
class StringChecker
{
private static string regexPattern = "^[A-Za-z-0-9,._!?=()%/;+*@$-]$";
public static string ReplaceMethode(Match m)
{
switch (m.Value)
{
case "\r":
return "";
case "\n":
return "";
case "'":
return "´";
case "\"":
return "";
case "p":
return "-";
case "Z":
return "S";
case "[":
return "s";
case "":
return "e";
case "":
return "E";
case "{":
return "Z";
case "|":
return "z";
case "D":
return "n";
case "C":
return "N";
case "ó":
return "o";
case "Ó":
return "O";
case "y":
return "Z";
case "z":
return "z";
case "B":
return "l";
case "A":
return "L";
case "":
return "a";
case "":
return "A";
case "ž":
return "z";
case "Ž":
return "Z";
case "š":
return "s";
case "Š":
return "S";
case "":
return "C";
case "
":
return "c";
case "–":
return "-";
case "ä":
return "ae";
case "ü":
return "ue";
case "ö":
return "oe";
case "é":
return "e";
case "è":
return "e";
case "ê":
return "e";
case "ë":
return "e";
case "á":
return "a";
case "à":
return "a";
case "â":
return "a";
case "æ":
return "ae";
case "å":
return "a";
case "ì":
return "i";
case "í":
return "i";
case "î":
return "i";
case "ï":
return "i";
case "ò":
return "o";
case "ô":
return "o";
case "õ":
return "o";
case "ù":
return "u";
case "ú":
return "u";
case "û":
return "u";
case "ý":
return "y";
case "ÿ":
return "y";
case "ø":
return "o";
case "œ":
return "oe";
case "ß":
return "ss";
case "ç":
return "c";
case "ñ":
return "n";
case "ã":
return "a";
case "&":
return "and";
case "":
return "";
case "0":
return "0";
case "1":
return "1";
case "2":
return "2";
case "3":
return "3";
case "4":
return "4";
case "5":
return "5";
case "6":
return "6";
case "7":
return "7";
case "8":
return "8";
case "9":
return "9";
default:
return m.Value;
}
}
public static string replaceNotAnsiCharacters(string stringToCheck)
{
string retValue = stringToCheck;
Regex myRegex = new Regex(regexPattern);
MatchEvaluator myEvaluator = new MatchEvaluator(ReplaceMethode);
if (!myRegex.IsMatch(stringToCheck))
{
retValue = "";
for (int i = 0; i < stringToCheck.Length; i++)
{
retValue += Regex.Replace(stringToCheck[i].ToString(), "-*.*", myEvaluator, RegexOptions.IgnoreCase);
}
}
return retValue;
}
}
}
Nun reicht dies aber nicht! Ich suche nach einer besseren Variante, die mir alles nicht erlaubte noch weglöscht!
noch besser wäre eine Lösung die ich direkt auf der datenbank anwenden kann. Per Trigger oder so..
Weiter habe ich das Problem, dass meine DB jetzt Daten beinhält welche nicht zulässig sind. Hoffe jemand kann mir helfen..
Danke schon mal
Thomä