Необходимо преобразовать этот PHP-код в C #
strtr($input, '+/', '-_')
Существует ли эквивалентная функция C #?
Метод PHP
strtr()
– это метод перевода, а не метод 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('/', '_')
@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