【发布时间】:2015-10-30 05:42:13
【问题描述】:
我正在尝试制作一个文件解析器,它将获取一个原始输入文件,然后创建一个新文件,该文件具有正确顺序的所有元素并带有正确的新行,以便另一个解析器可以读取它。
所以我的文件是 PGN(便携式游戏符号)。这些文件在国际象棋中用于记录人们在计算机上玩的游戏。
它们看起来像:
--------------------------------------
[Event "Computer chess game"]
[Date "2015.10.28"]
[Round "?"]
[White "White Player"]
[Black "Black Player"]
[Result "1-0"]
[BlackElo "2400"]
[ECO "A25"]
[Opening "English"]
[Time "10:39:20"]
[Variation "Closed"]
[WhiteElo "2400"]
[Termination "normal"]
[PlyCount "63"]
[WhiteType "human"]
[BlackType "human"]
1. f3 e6 2. g4 Qh4# 1-0
-------------------------------
在 Reddit 的 /r/chess 上,您可以在其中使用 [pgn][/pgn] 围绕您的游戏,然后它会创建一个可玩的棋盘,您或其他人可以在您的游戏中逐步完成并为您提供建议等。
问题是我玩的网站,PGN 出现如上。 /r/chess 解析器不喜欢它。
它希望每个动作都在单独的一行上:
1. f3 e6
2. g4 Qh4# 1-0
由于我正在尝试学习 Powershell,因此我想创建一个脚本来打开原始 PGN,然后将其重新格式化为如上所示,并可能会提取事件、日期、白色玩家、黑色玩家和结果.然后对其进行格式化,以便在每次移动后插入一个新行。然后输出一个用[pgn][/pgn]包围的新文件。
我对如何做到这一点有点迷茫。我需要使用正则表达式吗?我知道,一旦我将文件读入 Powershell,我也可以将其视为数组。
输出文件应如下所示:
[pgn][Event "Computer chess game"]
[Date "2015.10.28"]
[White "White Player"]
[Black "Black Player"]
[Result "1-0"]
1. f3 e6
2. g4 Qh4# 1-0 [/pgn]
感谢您的任何帮助!
【问题讨论】:
-
行总是按这个顺序吗?并且总是相同的计数?
标签: powershell powershell-2.0 powershell-3.0