Преобразование функции strtr php в C #

Нужно конвертировать этот PHP-код в C #

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

Существует ли эквивалентная функция C #?

3

Решение

PHP метод strtr() это метод перевода, а не string replace метод.
Если вы хотите сделать то же самое в C# затем используйте следующее:

Согласно вашим комментариям

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

Примечание: нет точно такого же метода, как strtr() в C#,

Вы можете найти больше информации о методе String.Replace здесь

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

ужасы Чудеса PHP … Я запутался в ваших комментариях, поэтому посмотрел их в руководстве. Ваша форма заменяет отдельные символы (все «b» становятся «1», все «a» — «0»). В C # нет прямого эквивалента, но простая замена дважды сделает работу:

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

@Damith @Rahul Nikate @ Виллем ван Румпт

Ваши решения обычно работают. Есть частные случаи с другим результатом:

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
1
По вопросам рекламы [email protected]