如何格式化流编写器以写入我的文本文件
本文关键字:我的 文本 文件 格式化 | 更新日期: 2023-09-27 18:31:16
文本文件用于描述Web浏览器上的游戏状态。所以我需要格式化我的nameWriter.WriteLine,看起来像这样。
Output to text file:
playerOneName, playerTwoName, _ , _ , _ , _ , _ , _ , _ , _
我知道这听起来像是"哦,写这个! 但是不,下划线是一个空白字段,将被我的 StreamWriter 替换,它跟踪玩家在井字游戏网页游戏中的动作。我可以使用什么来代替下划线来使该空间可用于我的读写?
这是我的StreamWriter,现在我只让它添加玩家名称。
你能告诉我如何将输出格式化为文本吗?
也许将其分隔成一个数组? 并使用数组分隔符列表来键入逗号?
string[] lineParts... and reference the linePart[0-11]
and then do a lineParts = line.Split(delimiterList)?
这是我的编写代码。
private void WriteGame(string playerOneName, string playerTwoName, string[] cells)
{
StreamWriter gameStateWriter = null;
StringBuilder sb = new StringBuilder();
try
{
gameStateWriter = new StreamWriter(filepath, true);
gameStateWriter.WriteLine(playerOneName + " , " + playerTwoName);
string[] gameState = { playerOneName,
playerTwoName, null, null, null, null,
null, null, null, null, null };//I cannot use null, they will give me errors
foreach (string GameState in gameState)
{
sb.Append(GameState);
sb.Append(",");
}
gameStateWriter.WriteLine(sb.ToString());
}
catch (Exception ex)
{
txtOutcome.Text = "The following problem ocurred when writing to the file:'n"
+ ex.Message;
}
finally
{
if (gameStateWriter != null)
gameStateWriter.Close();
}
}
最后,如果 playerOneName 已经在文本文件中,我该如何在它后面专门写 playerTwoName 并检查它是否存在?
使用 Visual Studio '08 ASP.NET 网站和表单
首先,定义一个事实,即下划线是一个特殊的东西,对你来说意味着空,逗号是你的分隔符:
const string EMPTY = "_";
const string DELIMITER = ",";
其次,不要在逗号和值之间写空格,这只会让你以后的生活更加困难:
// removed spaces
gameStateWriter.WriteLine(playerOneName + DELIMITER + playerTwoName);
现在,您的游戏状态已准备好创建:
string[] gameState = { playerOneName, playerTwoName, EMPTY, EMPTY, EMPTY, EMPTY,
EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, };
要检查第二个玩家是否已经存在,您需要打开并读取现有文件,并检查第二个令牌是否不为空。也就是说,如果您已阅读文件;
var line = "..."; // read the file until the line that .StartsWith(playerOne)
var playerTwo = line.Split(DELIMITER)[1];
if (playerTwo == EMPTY)
{
// need to store the real playerTwo, otherwise leave as is
}
您可以保留代码,但不要sb.Append(GameState);
在当前代码中sb.Append(GameState??"_");
。
"??" 是 C# 中的空合并运算符 - 因此null ?? "_"
的结果是"_","SomeValue"??"_"
是"SomeValue"。