2017-03-03 45 views
0

所以我的文本文件会有这样的“你好,我的名字是[0],我在[1] ...”学习等等,随着数量的增加。在占位符处,我想用用户输入替换占位符。C#通过带有占位符的文本文件运行,并用用户输入替换占位符

我已经看过以前的问题,但我找不到能有效集成用户输入的问题。

代码,以便远

string input = File.ReadAllText(openFileDialog.FileName); 
textBox1.Text = input; 
string result = Regex.Replace(input, "[0-9]", Console.ReadLine()); 
string result2 = result.Replace("[", string.Empty).Replace("]", string.Empty); 
textBox2.Text = result2; 

它崩溃,当我尝试加载我的文本文件由于Console.ReadLine()部分错误。我假设我需要一个循环遍历文本文件中的文本来查找每个占位符并请求用户输入,但我不确定如何解决这个问题。

+1

你看过https://msdn.microsoft.com/en-us/library/system.string.format%28v=vs.110%29.aspx字符串格式吗? – Hogan

+0

你是否事先知道你的文件内容还是会动态的? – dbraillon

回答

0

让我知道如何去

string input = File.ReadAllText(openFileDialog.FileName); 
//Hi, my name is {0} and I study at {1}... 
textBox1.Text = input; 
//Get your name and school here 
var name = ""; 
var school = "" 
textBox2.Text = string.Format(input, name, school); 
0

我觉得这个方法可以帮助你:

public static string AdjustString(string str, List<string> userInput) 
{ 
    int i = 0; 
    foreach (var input in userInput) 
    { 
     var searchedSubstring = $"[{i}]"; 
     str = str.Replace(searchedSubstring, input); 
     i++; 
    } 
    return str; 
} 

static void UsgeExample() 
{ 
    var newString = AdjustString("[0][1][2]123[3]", 
     new List<string> {"A", "B", "C", "D"}); 
} 

newString = “ABC123D”

此外,您还可以尝试字典。键=“[0]”或“[1]”等等,你想看到的值而不是这些键。