我试图制作一个程序来替换文件中的单词,但我不知道当单词现在是一个未知单词时如何替换 当文件未修改时,这是我的替换代码,但是当用户更改单词/昵称并想要再次更改时,我需要知道2个单词之间的单词/昵称
string path2 = filePath + "\\test\\versions\\"+comboBox1.Text+"\\";
string text = File.ReadAllText(path2+comboBox1.Text+".json");
text = text.Replace("${auth_player_name}", textBox1.Text);
File.WriteAllText(path2+comboBox1.Text+".json", text);
这是我需要替换的单词之间的两个单词
--username ${auth_player_name} --version
现在我试图将未知单词更改为$ {auth_player_name},以便用户可以再次更改它,这需要是那个单词,因为我的程序可以编辑其他类似但具有其他名称的文件
我尝试了这个但是没有工作
text = Regex.Replace(text, "--username \".*\" --ver", "-username \"${auth_player_name}\" --ver");
这是所有代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using System.Text.RegularExpressions;
namespace ChangeName
{
public partial class Form1 : Form
{
string filePath = Environment.GetFolderPath(System.Environment.SpecialFolder.ApplicationData);
public Form1()
{
InitializeComponent();
DirectoryInfo dinfo = new DirectoryInfo(filePath+"\\.minecraft\\versions");
FileInfo[] Files = dinfo.GetFiles("*.json", SearchOption.AllDirectories);
foreach (FileInfo folder in Files)
comboBox1.Items.Add(Path.GetFileNameWithoutExtension(folder.Name));
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
string path2 = filePath + "\\.minecraft\\versions\\"+comboBox1.Text+"\\";
string text = File.ReadAllText(path2+comboBox1.Text+".json");
text = text.Replace("${auth_player_name}", textBox1.Text);
File.WriteAllText(path2+comboBox1.Text+".json", text);
}
}
}
答案 0 :(得分:0)
string path2 = filePath + "\\test\\versions\\"+comboBox1.Text+"\\";
string text = File.ReadAllText(path2+comboBox1.Text+".json");
//Changed to Regex
Regex reg = new Regex("--username ([^-]+)--version");
//using regex.replace function
text = reg.Replace(text, "--username " + textBox1.Text + " --version");
//end edit
File.WriteAllText(path2+comboBox1.Text+".json", text);
<强> Documentation for Regex.Replace 强>
更新以将文本变量设置为等于替换。