改变“。”到C#字符串中的“_”

时间:2011-06-13 15:01:50

标签: c# string replace

我正在用C#开发一个软件,最终结果是一个Excel电子表格。使用多个变量创建电子表格的标题,以准确解释电子表格的内容。其中一个变量是一个包含如下数据的字符串:

'1.1.1'

我需要在创建电子表格时将其转换为:

'1_1_1'

我尝试过使用String.Replace方法,但似乎忽略了它。有什么想法吗?

最好的问候

7 个答案:

答案 0 :(得分:35)

我打赌你这样做:

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

当你应该这样做时:

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

请记住,.Net字符串是不可变的,因此任何更改都会产生新的字符串。

答案 1 :(得分:12)

你有可能无视string.Replace的结果。你需要:

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

只需调用Replace不会更改现有的字符串 - 它会创建一个 new 字符串并将其返回。字符串在.NET中是不可变的 - 它们在创建后永远不会改变。

答案 2 :(得分:4)

当您使用string.Replace时,您是否记得必须分配它?

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

什么都不做。

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

将返回带有下划线替换点的字符串。

答案 3 :(得分:2)

如果我不得不猜测,你没有捕获String.Replace返回的值。字符串是不可变的,因此String.Replace返回一个新字符串,您需要存储一个引用。

string foo = "1.1.1";
foo = foo.Replace('.', '_');

答案 4 :(得分:1)

String input = "1.1.1";
input = input.Replace(".", "_");

答案 5 :(得分:0)

字符串是不可变的,所以请确保你这样使用它:

string myString = "1.1.1";
myString = myString.Replace('.', '_');

答案 6 :(得分:0)

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