2017-08-30 7 views
0

を特殊文字を削除することができません背景は、文字列から

ユーザーがDBに格納された情報を入力するように要求されているアプリケーションがあります。その後、5分ごとに実行されるアプリケーションがあり、以前のアプリケーションを使用してユーザーが入力した情報が取得されます。私のアプリケーションは、データベースからすべての情報を取得してから、指定されたドキュメントを作成して、それをサーバに配置してユーザが取得できるようにします。しかし、特定の機能が正しく実行されていない特定のドキュメントに問題が発生し始めました。だから私はこの問題を、ユーザーがエントリーアプリケーションに入力した文字列であると特定しました。タイトル列に「Jame's Bond Story」があり、私のアプリケーションではその文書が作成されています。だから、デバッグ後、私は次の問題を特定しました。

問題

特定のユーザーが、彼がしたが、単一引用符'が本当に単一引用符が、異常な奇妙な文字の他のいくつかのタイプではありませんでした何をしたかわかりません。私はそれを削除できるかどうかを確認するために次のコードを実行することでこれを証明しました。

string cleanTitle = BookRec.TitleName.Replace("'",""); 

しかし、これはまったく機能しませんでした。文字列を文字列に分割し、文字を取得するのではなく、私は奇妙な数字を取得しました。そこで、この正規表現コードを使用してすべての文字を消去し、数字と文字のみを許可しました。

string cleanTitle = Regex.Replace(BookRec.TitleName, "[^\\w\\. _]", ""); 

ユーザーはタイトルは私が今週に走ったタイプを含む任意の文字をフィルタリングするための方法を探しています特別な次の文字() _ , - .

を入れたいので、これは今問題となっていますユーザーが同意した6文字のみを許可します。私は空の文字列を取得している次の正規表現の数式ですることができます。

Regex fomrula = new Regex(@"^[a-zA-Z0-9_\[])(,\-.'"); 

ただし、タイトルを置き換えるときに空の文字列が表示されます。私は正規表現の大きなファンではない、私はまたこれにサブ文字列のアプローチにも開いています。

付属情報

私は与えられた情報をデータベースに挿入するアプリケーションにアクセスすることはできませんよ。私はデータベースから読み込み、アクションを実行することしかできません。

+2

この質問を見るこの投稿は参考になりましたか?20分前https://stackoverflow.com/questions/45969065/passing-a-string-containing-special-characters-to-database –

+0

@LBこれらの質問は閉じないでください** 。彼らは正確な重複ではなく、実際にはほとんど関係がありません。 – maccettura

+0

@maccettura私はそうだと思うので、いつでも再投票することができます –

答えて

2

あなたはこのような何かを試してみたいことがあります。

string cleanTitle = Regex.Replace(BookRec.TitleName, @"[^\u0000-\u007F]+", ""); 

これは、これらの値の間にない任意のUnicode文字に置き換えられます。私はそれらがあなたに問題を引き起こしているものかどうかは分からないがうまくいけば、あなたに正しい方向へのヒントを与えるかもしれない。