Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 替换为正则表达式_C#_Regex - Fatal编程技术网

C# 替换为正则表达式

C# 替换为正则表达式,c#,regex,C#,Regex,在我们的应用程序中,用户将数据从MS word输入asp.net textarea控件,最后将数据保存在SQL Server中。由于某些原因,从SQLServerManagementStudio中查看时,几乎没有看起来像小正方形的垃圾字符 这导致生成Crystal报告时出错 我需要一个正则表达式,它将删除所有这些字符和项目符号。唯一有效的输入是 A-Z, a-z , 0-9, ~ ! @ # % $ ^ & * ( ) _ + | ` - = \ {}:">? < [ ]

在我们的应用程序中,用户将数据从MS word输入asp.net textarea控件,最后将数据保存在SQL Server中。由于某些原因,从SQLServerManagementStudio中查看时,几乎没有看起来像小正方形的垃圾字符

这导致生成Crystal报告时出错

我需要一个正则表达式,它将删除所有这些字符和项目符号。唯一有效的输入是

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