Заменить метод в C # не работает для отдельных символов? - PullRequest
2 голосов
/ 06 марта 2011

Я оглядывался по сторонам, и, похоже, я правильно этим пользуюсь, но результаты не удаются. Я хочу пройти и избавиться от любых 0 и заменить их на o.

newString = strOld.Replace('0', 'o'); // doesn't work.

newString = strOld.Replace("0", "o"); // doesn't work either.  

Я что-то не так делаю?

Ответы [ 6 ]

2 голосов
/ 24 марта 2011

Оказывается, чтобы использовать метод замены, он должен был идти в той же строке.Так что пока это не сработает:

String newString;

String oldString = "b00k";

newString = oldString.Replace('0', 'o');

Это будет работать:

String newString = "b00k";

newString = newString.Replace('0', 'o');

Appreciate all the feedback.
2 голосов
/ 06 марта 2011

Я сделал этот тест, и он отлично работает:

class Program
{
    static void Main(string[] args)
    {
        var newString = "M0000".Replace('0', 'o');
    }
}

Попробуйте небольшой тестовый пример, похожий на тот, который я создал, и посмотрите, что получится.

1 голос
/ 27 января 2012

Я столкнулся с той же проблемой, на самом деле просто для информации, я делал что-то вроде myOldString.Replace("#", "No.");. Это не работало, я проверил это. Наконец, я нашел решение, когда я заменил приведенную выше строку как myOldString = myOldString.Replace("#","No"); string.replace создает реплику, ранее я не назначал ее фактической строке. Убедитесь, что вы не делаете такие т

0 голосов
/ 19 марта 2013

Следующая ссылка показывает это очень четко: http://www.dotnetperls.com/replace Если вы используете string.Replace, его нужно назначить (как упомянуто выше Geeklat):

String newString = "b00k";
newString = newString.Replace('0', 'o');

Если вы используете "StringBuilder "переменная не должна быть назначена - вот пример программы (вывод ниже):

using System;
using System.Text;
class Program
    {
    static void Main()
    {
    const string s = "This is an example.";

    // A
    // Create new StringBuilder from string
    StringBuilder b = new StringBuilder(s);
    Console.WriteLine(b);

    // B
    // Replace the first word
    // The result doesn't need assignment
    b.Replace("This", "Here");
    Console.WriteLine(b);

    // C
    // Insert the string at the beginning
    b.Insert(0, "Sentence: ");
    Console.WriteLine(b);
    }
}

Вывод:

This is an example.
Here is an example.
Sentence: Here is an example.
0 голосов
/ 06 марта 2011

Вы не делаете ничего плохого. Если вы хотите заменить символ вместо строки, вам нужно сделать: s.Replace(char.Parse("0"), char.Parse("o")), но я не могу придумать причину, по которой ваш код не работает.

0 голосов
/ 06 марта 2011

Работает нормально здесь ... версия с символом должна работать независимо от случая, если они были буквами (я полагаю, вы пытаетесь заменить нули на строчную букву O) Возможно, вы используете шрифт, который не различает ноль и букву О, или что-то в этом роде?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...