5

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

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

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

4

5 回答 5

4

@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

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

   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
于 2015-11-02T11:29:45.550 回答
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;
}
于 2015-11-02T09:34:04.173 回答
3

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

根据您的评论

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

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

您可以在此处找到有关 String.Replace 方法的更多信息

于 2015-11-02T09:35:19.150 回答
1

PHP的恐怖奇迹......我被你的评论弄糊涂了,所以在手册中查找它。您的表单将替换单个字符(所有“b”都变为“1”,所有“a”变为“0”)。C# 中没有直接的等价物,但只需替换两次即可完成工作:

string result = input.Replace('+', '-').Replace('/', '_')
于 2015-11-02T09:59:09.543 回答
1

以防万一还有来自 PHP 的开发人员缺少 strtr php 函数。

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

字符替换如下所示:

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

换词:

var output = input.StrTr(("hello","hi"), ("hi","hello"));
于 2021-12-22T18:55:43.213 回答