我正在用C#开发一个软件,最终结果是一个Excel电子表格。使用多个变量创建电子表格的标题,以准确解释电子表格的内容。其中一个变量是一个包含如下数据的字符串:
'1.1.1'
我需要在创建电子表格时将其转换为:
'1_1_1'
我尝试过使用String.Replace
方法,但似乎忽略了它。有什么想法吗?
最好的问候
答案 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