2015-11-19 31 views
0

我现在有有一两句,看起来像这样的文本文件的文件更换相同的字符串多次:与不同的输入在C#

Hello. Your name is <name> and the username you have chosen is <username>. 
Your password is <password>. Your friend's username is <username> 
and their password is <password>. 

我首先要做的是询问用户以下几个问题:

public string questions(string sentences) 
      { 
       Console.Write("Enter Your Name: "); 
       string name = Console.ReadLine(); 
       Console.Write("Enter Your Username: "); 
       string userName= Console.ReadLine(); 
       Console.Write("Enter Your Password: "); 
       string password= Console.ReadLine(); 
       string textFile = File.ReadAllText(sentences); 
       textFile = textFile.Replace("<name>", name); 
       textFile = textFile.Replace("<username>", userName); 
       textFile = textFile.Replace("<password>", password); 
       File.WriteAllText(sentences, textFile); 
       return textFile; 
     } 

当用户输入他们的名字,是因为只有一个<name>,但是,当涉及到的用户名和密码是没有问题的,这是一个问题。例如,当用户输入用户名时,它会替换文件中的所有内容,当我只想替换第一个<username>时,它会显示<username>。我希望这个程序要做的是读取文件,每次遇到<name>,<password><username>提示用户输入他们的名称,密码或用户名,并只替换该占位符,而不是所有具有相似名称的占位符。

有没有一种方法可以编辑我的当前代码来实现这个目标?我考虑过在<name1><username1>之类的文本文件中编号的东西,但这只适用于这个特定的文本文件。如果文本文件包含未知数量的用户名或密码会怎么样?

+0

你能逐行读取文件中的行? – Mairaj

+0

@MairajAhmad是的,文件可以逐行阅读。它不需要一次读取整个文本文件。 – joanne72205

+0

嗯,你为什么要发送朋友的密码?这听起来像个坏主意。如果你正确地哈希密码,你甚至不应该这样做...... – user1429080

回答

2

你可以尝试Regex.Replace

var regex = new Regex("<username>"); 
textFile = regex.Replace(textFile, userName, 1);