C#中strtrphp函数的转换
Conversion of strtr php function in C#
需要在 C# 中转换此 php 代码
strtr($input, '+/', '-_')
是否存在等效的 C# 函数?
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
方法 strtr()
是翻译方法而不是 string replace
方法。
如果您想在 C#
中执行相同操作,请使用以下内容:
根据您的意见
string input = "baab";
var output = input.Replace("a", "0").Replace("b","1");
Note : There is no exactly similar method like strtr()
in C#
.
PHP 的恐怖 奇观...我对您的评论感到困惑,因此在手册中进行了查找。您的表单替换了单个字符(所有 "b" 都变成了“1”,所有 "a" 都变成了“0”)。 C# 中没有直接等效项,但只需替换两次即可完成工作:
string result = input.Replace('+', '-').Replace('/', '_')
@Damith @Rahul Nikate @Willem van Rumpt
您的解决方案通常有效。有不同结果的特殊情况:
echo strtr("hi all, I said hello","ah","ha");
returns
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 php 函数。
现在有一个字符串扩展:
https://github.com/redflitzi/StrTr
它具有用于字符替换的双字符串选项以及 Array/List/Dictionary 对替换单词的支持。
字符替换如下所示:
var output = input.StrTr("+/", "-_");
单词替换:
var output = input.StrTr(("hello","hi"), ("hi","hello"));
需要在 C# 中转换此 php 代码
strtr($input, '+/', '-_')
是否存在等效的 C# 函数?
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
方法 strtr()
是翻译方法而不是 string replace
方法。
如果您想在 C#
中执行相同操作,请使用以下内容:
根据您的意见
string input = "baab";
var output = input.Replace("a", "0").Replace("b","1");
Note : There is no exactly similar method like
strtr()
inC#
.
PHP 的恐怖 奇观...我对您的评论感到困惑,因此在手册中进行了查找。您的表单替换了单个字符(所有 "b" 都变成了“1”,所有 "a" 都变成了“0”)。 C# 中没有直接等效项,但只需替换两次即可完成工作:
string result = input.Replace('+', '-').Replace('/', '_')
@Damith @Rahul Nikate @Willem van Rumpt
您的解决方案通常有效。有不同结果的特殊情况:
echo strtr("hi all, I said hello","ah","ha");
returns
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 php 函数。
现在有一个字符串扩展:
https://github.com/redflitzi/StrTr
它具有用于字符替换的双字符串选项以及 Array/List/Dictionary 对替换单词的支持。
字符替换如下所示:
var output = input.StrTr("+/", "-_");
单词替换:
var output = input.StrTr(("hello","hi"), ("hi","hello"));