Изменение "." на "_" в строке C # - PullRequest
3 голосов
/ 13 июня 2011

Я занимаюсь разработкой программного обеспечения на C #, и конечным результатом является электронная таблица Excel.Название таблицы создается с использованием нескольких переменных, чтобы точно объяснить, что это за таблица.Одной из переменных является строка, которая содержит такие данные:

'1.1.1'

Мне нужно преобразовать ее в точке создания электронной таблицы:

'1_1_1'

Я пытался использовать метод String.Replace, но он, кажется, просто игнорирует его.Есть идеи?

С наилучшими пожеланиями

Ответы [ 7 ]

35 голосов
/ 13 июня 2011

Могу поспорить, что вы делаете это:

myString.Replace(".","_");

Когда вы должны это делать:

myString = myString.Replace(".","_");

Помните, что в .Net строки неизменяемы, поэтому любые изменения приводят к новомустрока.

12 голосов
/ 13 июня 2011

Скорее всего, вы игнорируете результат string.Replace.Вам нужно:

text = text.Replace('.', '_');

Простой вызов Replace не меняет существующую строку - он создает новую строку и возвращает ее.Строки неизменны в .NET - они никогда не меняются после создания.

4 голосов
/ 13 июня 2011

Когда вы используете string.Replace, вы помните, что вы должны назначить его?

yourString.Replace(".", "_");

Ничего не поделаешь.

string newString = yourString.Replace(".", "_");

вернет строку с точками, замененными символами подчеркивания.

2 голосов
/ 13 июня 2011

Если бы мне пришлось угадывать, вы не захватываете значение, возвращаемое String.Replace.Строки являются неизменяемыми, поэтому String.Replace возвращает новую строку, на которую необходимо сохранить ссылку.

string foo = "1.1.1";
foo = foo.Replace('.', '_');
1 голос
/ 13 июня 2011
String input = "1.1.1";
input = input.Replace(".", "_");
0 голосов
/ 13 июня 2011

String.Replace правильный способ сделать это:

 private void button1_Click(object sender, RoutedEventArgs e) {
        String myNumbers = "1.1.1";
        Console.WriteLine("after replace: " + myNumbers);
        myNumbers = myNumbers.Replace(".", "_");
        Console.WriteLine("after replace: " + myNumbers);
    }

даст:

after replace: 1.1.1
after replace: 1_1_1
0 голосов
/ 13 июня 2011

строки являются неизменяемыми, поэтому убедитесь, что вы используете их следующим образом:

string myString = "1.1.1";
myString = myString.Replace('.', '_');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...