C#中strtrphp函数的转换

本文关键字:转换 函数 strtrphp | 更新日期: 2023-09-27 18:20:07

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

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

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

C#中strtrphp函数的转换

@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

PHP方法strtr()是translate方法,而不是string replace方法。如果你想在C#中做同样的事情,那么使用以下内容:

根据您的意见

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

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

你可以在这里找到更多关于String.Replace方法的信息

   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;
}

PHP的恐怖奇迹。。。我被你的评论弄糊涂了,所以查阅了手册。您的表单将替换单个字符(所有"b"都将变为"1",所有"a"都将为"0")。C#中没有直接的等价物,但简单地替换两次就可以完成任务:

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

以防万一,仍然有来自PHP的开发人员缺少strtr PHP函数。

现在有一个字符串扩展:https://github.com/redflitzi/StrTr
它具有用于字符替换的两个字符串选项,以及用于替换单词的Array/List/Dictionary支持。

字符替换如下所示:

var output = input.StrTr("+/", "-_");

词语替换:

var output = input.StrTr(("hello","hi"), ("hi","hello"));