在C#中转换strtr php函数

时间:2015-11-02 09:32:14

标签: c# php asp.net replace strtr

需要在C#中转换此PHP代码

strtr($input, '+/', '-_')

是否存在等效的C#函数?

4 个答案:

答案 0 :(得分:3)

   string input ="baab";
   string strfrom="ab";
   string strTo="01";
   for(int i=0; i< strfrom.Length;i++)
   {
     input = input.Replace(strfrom[i], strTo[i]);
   }
   //you get 1001

示例方法:

string StringTranslate(string input, string frm, string to)
{
      for(int i=0; i< frm.Length;i++)
       {
         input = input.Replace(frm[i], to[i]);
       }
      return input;
}

答案 1 :(得分:3)

PHP方法strtr()是翻译方法,而不是string replace方法。 如果您想在C#中执行相同的操作,请使用以下内容:

根据您的意见

string input = "baab";
var output = input.Replace("a", "0").Replace("b","1");
  

注意:strtr()中没有与C#完全相同的方法。

You can find more about String.Replace method here

答案 2 :(得分:1)

恐怖 PHP的奇迹......我对你的评论感到困惑,所以在手册中查了一下。您的表单会替换个别字符(所有&#34; b&#34;&#39; s&#34; 1&#34;,所有&#34; a&#34;&#39; s&be;成为& #34; 0&#34)。在C#中没有直接的等价物,但只需更换两次就可以完成工作:

string result = input.Replace('+', '-').Replace('/', '_')

答案 3 :(得分:1)

@Damith @Rahul Nikate @Willem van Rumpt

您的解决方案通常有效。有些特殊情况会有不同的结果:

echo strtr("hi all, I said hello","ah","ha");

返回

ai hll, I shid aello

代码:

ai all, I said aello

我认为php strtr同时替换输入数组中的字符,而您的解决方案执行替换然后结果用于执行另一个。 所以我做了以下修改:

   private string MyStrTr(string source, string frm, string to)
    {
        char[] input = source.ToCharArray();
        bool[] replaced = new bool[input.Length];

       for (int j = 0; j < input.Length; j++)
            replaced[j] = false;

        for (int i = 0; i < frm.Length; i++)
        {
            for(int j = 0; j<input.Length;j++)
                if (replaced[j] == false && input[j]==frm[i])
                {
                    input[j] = to[i];
                    replaced[j] = true;
                }
        }
        return new string(input);
    }

所以代码

MyStrTr("hi all, I said hello", "ah", "ha");

报告与php相同的结果:

ai hll, I shid aello