如何在C#中动态创建字符串?

时间:2017-11-09 05:16:40

标签: c# asp.net string string-formatting

我正在为管理笔记本电脑的个人热点开发一个应用程序  (课程的Windows)。 我在更改热点名称方面遇到了一些困难。 这是我的代码:

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

此处,在//For CMD Command System.Diagnostics.Process process = new System.Diagnostics.Process(); System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(); startInfo.UseShellExecute = false; startInfo.RedirectStandardOutput = true; startInfo.FileName = "CMD.exe"; startInfo.CreateNoWindow = true; //Reading User Input in textBox1: string name = textBox1.Text; //CMD Argument:..., Which is currently written wrong to make it Easy to //understand the problem startInfo.Arguments = "/C netsh wlan set hostednetwork ssid="name"; process.StartInfo = startInfo; process.Start(); 行中,语法错误。分配给Arguments的值应为单个字符串。我需要将具有动态值的Arguments与其余的常量字符串合并。我该怎么做?

2 个答案:

答案 0 :(得分:4)

除非我在这里遗漏了一些东西,否则在我看来,简单的字符串连接就可以了:

startInfo.Arguments = "/C netsh wlan set hostednetwork ssid=" + name;

答案 1 :(得分:2)

您可以通过多种方式创建动态字符串:

对于您的具体情况,Concatenation是最佳选择,因为您的string非常简单。您选择此方法的原因是因为与其他方法相比,它非常轻语法清晰。

startInfo.Arguments = "/C netsh wlan set hostednetwork ssid=" + name;

对于任何更复杂的事情,string.Format是一个受欢迎的事情。您通常会使用它来组合比您的示例更复杂的stringsThis tutorial彻底涵盖了这一主题。

startInfo.Arguments = string.Format("/C netsh wlan set hostednetwork ssid={0}", name);

C#6.0的发布包含一个简洁的功能:interpolated strings。对于string.Format而言,大部分只是syntactic sugar,其中下面的行在编译时变为上面的行。有细微的差别,但这些在这个帖子中并不重要。

startInfo.Arguments = $"/C netsh wlan set hostednetwork ssid={name}";

最后,如果你需要多次更改一个字符串(我通常使用5的规则 - 即字符串变化超过5次),我会使用StringBuilder类。在许多其他应用程序中,一个很棒的应用程序将是一个长循环,它会在每次迭代时修改某个字符串。 See This Tutorial。 在这种情况下,垃圾收集器将感谢您使用StringBuilder