2010-03-12 136 views
0

什麼是c#.net相當於php的preg_replace函數?.net等效於php preg_replace

PHP代碼是這樣的:

const ALLOW_VALUES = '[^a-z0-9àáâäèéêëìíîïòóôöùûŵýÿyÁÂÄÈÉÊËÌÎÏÒÓÔÖÙÛÜŴYÝ]'; 

    public function streetTownHash($data, $hashCheck = false, $updateRecord = false) 
    { 
     foreach($data as $key=>$value){ 
     try{ 
     $value = mb_convert_case($value, MB_CASE_LOWER, "UTF-8"); 
     } catch(Exception $e) { 
      echo "Requires extension=php_mbstring.dll enabled ! - $e"; 
     } 
     $valueConcat .= preg_replace('/'.self::ALLOW_VALUES.'/','',$value); # Remove punctuation etc 
     } 
     $streetTownHash = sha1($valueConcat); 

.... 

編輯:現在像這樣。

private readonly SHA1 hash = SHA1.Create(); 
    private readonly Regex PunctuationStripper = new Regex(@"[^a-z0-9àáâäèéêëìíîïòóôöùûŵýÿyÁÂÄÈÉÊËÌÎÏÒÓÔÖÙÛÜŴYÝ]", RegexOptions.IgnoreCase); 
    public string HashString(string value) 
    { 
     value = value.ToLower(); 
     value = PunctuationStripper.Replace(value, string.Empty); 
     var bytes = ASCIIEncoding.UTF8.GetBytes(value); 
     var hashed = hash.ComputeHash(bytes); 
     return ASCIIEncoding.UTF8.GetString(hashed); 
    } 

編輯:

請問正則表達式也需要改變?

+0

你能描述的preg_replace的功能是什麼?我不知道PHP。 – 2010-03-12 14:33:01

+2

在.NET中,你應該使用'\ p {L}'而不是'àáâäèé...'.... – kennytm 2010-03-12 14:37:51

+0

不完全確定..模糊頭日..正則表達式後綴我想象http://php.net/manual/en /function.preg-replace.php – Hath 2010-03-12 14:37:58

回答

1

您正在尋找Regex類。

例如:

static readonly Regex PunctuationStripper = new Regex(@"[^a-z0-9àáâäèéêëìíîïòóôöùûŵýÿyÁÂÄÈÉÊËÌÎÏÒÓÔÖÙÛÜŴYÝ]", RegexOptions.IgnoreCase); 
//... 
value = PunctuationStripper.Replace(value, "");