首页 新闻 会员 周边

麻烦会PHP的朋友,帮忙转成C#版本,非常感谢

0
悬赏园豆:140 [已关闭问题] 关闭于 2012-07-13 16:22

    /**
     * 将数组非0-9a-zA-Z!*() 替换为asicc 16进制
     *
     * @param array $params array
     * @return array array
     */
    private static function replaceParams($params)
    {
        foreach($params as $key=>$val)
        {
            $params[$key] = preg_replace_callback('/[^0-9a-zA-Z!*()]/',create_function('$matches','return "%".strtoupper(dechex(ord($matches[0])));'),$val);
        }
        return $params;
    }

 

代码如上所示。

问题补充:

     /// <summary>
        /// 将数组非0-9a-zA-Z!*() 替换为asicc 16进制
        /// </summary>
        /// <param name="_params"></param>
        /// <returns></returns>
        public static Dictionary<String, String> ReplaceParams(Dictionary<String, String> _params)
        {
            Dictionary<String, String> new_params = new Dictionary<string, string>();
            foreach(KeyValuePair<String, String> kvp in _params)
            {
                String key = kvp.Key;
                String val = kvp.Value;
                //$params[$key] = preg_replace_callback('/[^0-9a-zA-Z!*()]/',create_function('$matches','return "%".strtoupper(dechex(ord($matches[0])));'),$val);
                val = Regex.Replace(val, "[^0-9a-zA-Z!*()]", new MatchEvaluator(Replace));
                new_params.Add(key, val);
            }
            return new_params;
        }

        /// <summary>
        /// 正则匹配替换
        /// </summary>
        /// <param name="m"></param>
        /// <returns></returns>
        private static string Replace(Match m)
        {
            int c = Convert.ToChar(m.Value);
            string s16 = Convert.ToString(c, 16);
            return "%" + s16.ToUpper();
        }

自己解出来了。。。

rhinovirus的主页 rhinovirus | 初学一级 | 园豆:152
提问于:2012-07-13 16:00
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册