2017-08-30 49 views
0

背景无法从字符串

还有在要求用户输入将被存储在一个数据库信息的应用程序中删除一个特殊字符。然后,我有一个应用程序每5分钟运行一次,并获取用户使用以前的应用程序输入的信息。然后,我的应用程序从数据库中获取所有信息,然后继续创建给定的文档,然后将其放置在服务器中供用户使用。然而,用户开始遇到特定文档的问题,其中某些功能没有正确执行。所以我将这个问题确定为用户在输入应用程序中输入的字符串,在标题栏中他们有“Jame's Bond Story”,所以我的应用程序创建了文档,并且没有任何问题。所以在调试后我发现了以下问题。

问题

不知道具体的用户如何做他做了什么,但单引号'是不是一个真正的单引号,但一些其他类型的怪异性格的异常。我通过运行下面的代码来证明我是否可以删除它。

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

然而,这并没有为我工作。然后我把字符串分解成一个字符数组,而不是让字符变成奇怪的数字。所以我开始使用这个正则表达式来清理每个字符,只允许数字和字母。

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

现在这已成为一个问题,因为用户希望标题包含特殊以下字符() _ , - .

我正在寻找一种方式来过滤掉任何字符,包括我遇到了这个星期的类型只允许用户同意的6个字符。我可以用下面的正则表达式公式BU我得到一个空字符串。

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

但是,当我替换标题时,我得到一个空字符串。我不是正则表达式的忠实粉丝,我也开放了一个子字符串方法来解决这个问题。

附带信息

我不能够访问插入信息给定的数据库的应用程序。我只能从数据库中读取数据,然后执行操作。

+2

看到这个问题posted 20 minutes ago 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字符不是这些值之间。我不确定那些是否会引起你的问题,但希望它能给你提供一个正确方向的暗示。