我现在把sql里的帖子导入到mysql里  但是sql里的帖子内容有很多稀奇古怪的字符 我想把这些字符过滤掉 只保留汉字 然后插入到mysql里 怎么过滤掉呀?

解决方案 »

  1.   

    使用正则表达式
     string pattern = @"^[\u300a\u300b]|[\u4e00-\u9fa5]|[\uFF00-\uFFEF]";
                 string str = "dfa#445发了*(*&*^e4444";
            if (System.Text.RegularExpressions.Regex.IsMatch(str, pattern))
            {
                System.Text.RegularExpressions.Match m = System.Text.RegularExpressions.Regex.Match(str, pattern);
               this.d.Text+= m.Value+m.NextMatch();        }
      

  2.   

    给你一个完整的啊,我整理了一下 string pattern = @"^[\u300a\u300b]|[\u4e00-\u9fa5]|[\uFF00-\uFFEF]";
                string str = "dfa#445发了*(*&*^e4444";
                if (System.Text.RegularExpressions.Regex.IsMatch(str, pattern))
                {
                    //提示的代码在这里写
                    System.Text.RegularExpressions.Match m = 
                        System.Text.RegularExpressions.Regex.Match(str, pattern);
                    string v="";
                    while (m.Success)
                    {
                       v+=m.Value;
                       m = m.NextMatch(); 
                    }
                }
      

  3.   

    5楼的兄弟 我还是没有看的懂  比如我查询出了content字段 怎么把它的不是汉字的字符过滤掉
      

  4.   


      删除汉字:CREATE FUNCTION DeleteHZ (@cargoname varchar(512)) 
    RETURNS varchar(512) 
    AS 
    BEGIN 
       DECLARE @Result varchar(512) 
       declare @sno smallint 
       select @Result='' 
       select @sno=1   
       while(@sno<=datalength(@cargoname))   
       begin 
          if datalength(SUBSTRING(@cargoname,@sno, 1))=1 
             set @Result=@Result+SUBSTRING(@cargoname,@sno, 1) 
          set @sno=@sno+1 
       end 
       RETURN(@Result) 
    ENDselect dbo.DeleteHZ(JobPosition) from PRC_PersonalInfo---Result---CUSTOMS     CUSTOMS報關員  删除字符:CREATE FUNCTION DeleteEN  (@cargoname varchar(512))  
    RETURNS varchar(512)  
    AS  
    BEGIN  
       DECLARE @Result varchar(512)  
       declare @sno smallint  
       select @Result=''  
       select @sno=1   
       while(@sno<=datalength(@cargoname))   
       begin  
          if datalength(SUBSTRING(@cargoname,@sno, 1))=2  
             set @Result=@Result+SUBSTRING(@cargoname,@sno, 1)  
          set @sno=@sno+1  
       end  
       RETURN(@Result)   替换SQL中的全角数字为半角数字create function  Ufn_convertWideNumericToAnsi
    (
     @vstrIn varchar(1000)
    )
    returns varchar(4000)
    as
    begin
     declare @strReturn varchar(4000)
      ,@bin  varbinary(4000)
      ,@str  varchar(4000)
      ,@stmp varchar(4)
      ,@i   int
      ,@len  int
    --  ,@vstrIn varchar(1000)
    --set @vstrIn ='031851001845'
     set @strReturn=''
     set @bin=convert(varbinary(4000),@vstrIn)
     exec master..xp_varbintohexstr @bin, @str out
     
     select @str=stuff(@str,1,2,'') 
     set @len=len(@str)
     set @i=1
     while @i<@len
     begin
     set @stmp = substring(@str,@i,4)
     if(substring(@stmp,1,1) <> 'A')
      return @vstrIn
     set @stmp = replace(@stmp,'A','')
     set @stmp = replace(@stmp,'B','')
    --print @stmp
     set @stmp = cast((convert(int,@stmp)-30) as varchar(1))
     set @strReturn = @strReturn + @stmp
      set @i=@i+4
     end
    --print @strReturn
    return  @strReturn
    end  示例select '031851001845' as ORG,  dbo.ufn_convertWideNumericToAnsi('031851001845') DES
    ORG                      DES           
    ------------------------ ---------------------------
    031851001845             031851001845
      

  5.   

     我的content字段(是text类型的) 里面有很多UBB代码 请问用sql语句或者C#怎么过滤掉呀?只保留汉字