C#中strtrphp函数的转换
本文关键字:转换 函数 strtrphp | 更新日期: 2023-09-27 18:20:07
需要在C#中转换此php代码
strtr($input, '+/', '-_')
是否存在等效的C#函数?
@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"));