2015-11-19 32 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);