C# 替换为正则表达式
在我们的应用程序中,用户将数据从MS word输入asp.net textarea控件,最后将数据保存在SQL Server中。由于某些原因,从SQLServerManagementStudio中查看时,几乎没有看起来像小正方形的垃圾字符 这导致生成Crystal报告时出错 我需要一个正则表达式,它将删除所有这些字符和项目符号。唯一有效的输入是C# 替换为正则表达式,c#,regex,C#,Regex,在我们的应用程序中,用户将数据从MS word输入asp.net textarea控件,最后将数据保存在SQL Server中。由于某些原因,从SQLServerManagementStudio中查看时,几乎没有看起来像小正方形的垃圾字符 这导致生成Crystal报告时出错 我需要一个正则表达式,它将删除所有这些字符和项目符号。唯一有效的输入是 A-Z, a-z , 0-9, ~ ! @ # % $ ^ & * ( ) _ + | ` - = \ {}:">? < [ ]
A-Z, a-z , 0-9, ~ ! @ # % $ ^ & * ( ) _ + | ` - = \ {}:">? < [ ] ; ' , . /
但删除项目符号或制表符空间是行不通的
任何雷格斯忍者能帮我解决这个问题吗?提前谢谢 您可以使用两个正则表达式。首先,使用模式
“\t |”
(其中
表示项目符号)将制表符和项目符号替换为空格(”
)。第二种模式是一个包含有效字符列表的否定字符集,第二种模式用于将无效字符替换为空字符串(“”
),即除去它们。由于需要保留CR和LF字符(以及空格),因此必须将这些字符添加到有效字符集中:
using System;
using System.Text.RegularExpressions;
static class Program
{
public static void Main()
{
string pattern1 = @"\t";
Regex regex1 = new Regex(pattern1, RegexOptions.Compiled);
string pattern2 = @"[^A-Za-z0-9~!#$^&*()_+|`\-=\\{}:"">?<\[\];',./ \r\n]";
Regex regex2 = new Regex(pattern2, RegexOptions.Compiled);
string input = "ABZabz09~!#$^&*()_+|`-=\\{}:\">?<[];',./ \r\nárvíztűrő\ttükörfúrógép";
string temp = regex1.Replace(input, " ");
string output = regex2.Replace(temp, "");
Console.WriteLine(input);
Console.WriteLine(output);
Console.ReadKey(true);
}
}
输出(您应该将console字体更改为Lucida console以查看项目符号):
•ABZabz09~#$^&*我认为你应该诊断潜在的问题,而不是说“某些原因”并试图修复症状,但这不是你的问题:
您将需要此正则表达式:
[^A-Za-z0-9~!\#\$\^&\*\(\)_\+\|`\-\=\\\{\};"\>\?\<\[\]:',\.\/]
并将其替换为”“
我知道这不完全是你想要的,但是在文本区域
上启用一个WYSIWYG编辑器,提供从Word粘贴的选项怎么样。是否有用于此任务的插件?到目前为止,这不是我的选项。请使用ASCII
SQL函数找出它的确切字符,我猜您找错了:请看一看。项目符号是ASCII字符,因此您可以将它们复制到您的正则表达式模式中并替换它。您不需要转义[]
中的任何内容,除非[]
绝对不真实。对“s”尝试正则表达式[\s]。根据您的逻辑,正则表达式匹配反斜杠或s,但您会发现它实际上匹配任何空格字符。此外,当您编辑某人的帖子时,请确保您的编辑不会更改答案并使其无效。非常感谢@kol,因为用户正在从MS word复制数据,我希望支持“和”字符。如何将其添加到上面的正则表达式中。我尝试按原样添加这些字符,但它无法按预期进行筛选。非常感谢您提供的任何帮助。再次感谢。欢迎您。我认为“和”可以作为Unicode字符转义序列添加到有效字符集中。我将尝试\u2018-\u201f,请参阅此处:
ABZabz09~!#$^&*()_+|`-=\{}:">?<[];',./
árvíztűrő tükörfúrógép
ABZabz09~!#$^&*()_+|`-=\{}:">?<[];',./
rvztr tkrfrgp
using System;
using System.Text;
using System.Text.RegularExpressions;
static class Program
{
public static void Main()
{
byte[] bulletBytes = new byte[] { 0xE2, 0x80, 0xA2 };
string bullet= Encoding.UTF8.GetString(bulletBytes);
string pattern1 = @"[\t" + bullet + "]";
Regex regex1 = new Regex(pattern1, RegexOptions.Compiled);
string pattern2 = @"[^A-Za-z0-9~!#$^&*()_+|`\-=\\{}:"">?<\[\];',./ \r\n]";
Regex regex2 = new Regex(pattern2, RegexOptions.Compiled);
string input =
bullet + "ABZabz09~!#$^&*()_+|`-=\\{}:\">?<[];',./ \r\n" +
bullet + "árvíztűrő\ttükörfúrógép";
string temp = regex1.Replace(input, " ");
string output = regex2.Replace(temp, "");
Console.OutputEncoding = Encoding.UTF8;
Console.WriteLine(input);
Console.WriteLine(output);
Console.ReadKey(true);
}
}
•ABZabz09~!#$^&*()_+|`-=\{}:">?<[];',./
•árvíztűrő tükörfúrógép
ABZabz09~!#$^&*()_+|`-=\{}:">?<[];',./
rvztr tkrfrgp
[^A-Za-z0-9~!\#\$\^&\*\(\)_\+\|`\-\=\\\{\};"\>\?\<\[\]:',\.\/]
\t