好的,我在这里尝试做的是以下
private void addgsc()
{
if (File.Exists(hud))
{
{
string s = " itemDef\n\r"
+ "{"
+ " name \"zombiecounter\"\n\r"
+ " rect 100 70 0 0 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_BOTTOM\n\r "
+ " textscale .5\n\r"
+ " textstyle ITEM_TEXTSTYLE_SHADOWED\n\r"
+ " textfont UI_FONT_OBJECTIVE\n\r"
+ " textalign ITEM_ALIGN_CENTER\n\r"
+ " forecolor 1 0 0 1\n\r"
+ " exp text (\"Zombies Left: \" + dvarInt(\"zombie_counter\"))\n\r"
+ " visible when (dvarInt(\"zombie_counter\") > 0);\n\r"
+ "decoration\n\r"
+ "} ";
string file = hud;
List<string> lines = new List<string>(System.IO.File.ReadAllLines(file));
int index = lines.FindLastIndex(item => item.Contains("playerscores"));
if (index != -1)
{
lines.Insert(index + 1, s);//""
}
System.IO.File.WriteAllLines(file, lines);
MessageBox.Show("done");
}
}
我正在寻找像这样的代码中的一行
itemDef
{
name "playerscores"
rect 0 0 100 0
ownerdraw CG_COMPETITIVE_MODE_SCORES
visible 1
}
但是我想要做的是找到玩家得分,然后在最后找到最后一个}并将其添加到那里,因为目前它正在玩家分数下添加它但我不知道我怎么能得到它去找那个然后找到最近的}其中一个并在neath下添加它所以它在一个新的块中没有添加到玩家得分一个所以会想要类似下面的内容
答案 0 :(得分:0)
我对所需的输出有点不清楚,因此下面的代码可能比您需要的更多,但应该让您走上正确的轨道。请原谅语法错误。
编辑:我重读了几次这个问题,并认为这就是你要找的。 p>
var allLinesInFile = System.IO.File.ReadAllLines(file);
var isPlayerScore = false;
var linesToWrite = new List<string>();
var linesToAdd = new List<string> {
"itemDef\n\r",
"{",
" name \"zombiecounter\"\n\r",
//and so on
"}"
};
foreach (var line in allLinesInFile)
{
linesToWrite.Add(line);
if (line.IndexOf("playerscores", StringComparison.OrdinalIgnoreCase) >= 0)
{
//starting of data detected.
isPlayerScore = true;
}
else if (isPlayerScore == true && line.IndexOf("}") >= 0)
{
//end of data detected
isPlayerScore = false;
linesToWrite.AddRange(linesToAdd);
}
}
System.IO.File.WriteAllLines(file, linesToWrite);
MessageBox.Show("done");