RT,想实现从一个文件中读取code,然后将文件中以符号$开始,$结束的所有字符串替换成想要的内容,该如何实现,请高手指点,谢谢
例如:文件中取出的字符串为fjksdjfk$fesdfdds$ asss$dfdsfd$
要将以上红色部分取出,并替换成自己想要的内容
PS:在网上找了一个例子
/// <summary>
/// 获得字符串中开始和结束字符串中间得值
/// </summary>
/// <param name="str">字符串</param>
/// <param name="s">开始</param>
/// <param name="e">结束</param>
/// <returns></returns>
public static string GetValue(string filePath, string s, string e)
{
string str = System.IO.File.ReadAllText(filePath);
Regex rg = new Regex("(?<=(" + s + "))[.\\s\\S]*?(?=(" + e + "))", RegexOptions.Multiline | RegexOptions.Singleline);
return rg.Match(str).Value;
}
发现只有字符可以实现,符号实现不了
例如:文件中取出的字符串为fjksdjfk$fesdfdds$ asss$dfdsfd$
要将以上红色部分取出,并替换成自己想要的内容
PS:在网上找了一个例子
/// <summary>
/// 获得字符串中开始和结束字符串中间得值
/// </summary>
/// <param name="str">字符串</param>
/// <param name="s">开始</param>
/// <param name="e">结束</param>
/// <returns></returns>
public static string GetValue(string filePath, string s, string e)
{
string str = System.IO.File.ReadAllText(filePath);
Regex rg = new Regex("(?<=(" + s + "))[.\\s\\S]*?(?=(" + e + "))", RegexOptions.Multiline | RegexOptions.Singleline);
return rg.Match(str).Value;
}
发现只有字符可以实现,符号实现不了
string reg = "(?<=[$]).*?(?=[$])";
string sss = "fjksdjfk$fesdfdds$ asss$dfdsfd$";
foreach (Match item in Regex.Matches(sss, reg))
{
Console.WriteLine(item.Value);
}
Regex.Matches(str, @"\$([^$]*)\$").OfType<Match>().Select(t => t.Groups[1].Value).ToList().ForEach(t => Console.WriteLine(t));
Regex reg = new Regex(@"\$[^$]+\$");
string result = reg.Replace(test, "$你要替换的内容$");
richTextBox2.Text = result;
/*-----输出-----
fjksdjfk$你要替换的内容$ asss$你要替换的内容$
*/
附源代码
static void Main(string[] args)
{
Stack<char> sk = new Stack<char>();
List<string> strNeed = new List<string>();//获取的字符串
string strOrg = "fjksdjfk$fesdfdds$ asss$dfdsfd$";//原始数据
string strReplace = "我是被替换的";//
List<char> cTemp=new List<char>();
foreach (char c in strOrg)
{
if (c == '$')
{
if (sk.Count == 1)
{
strNeed.Add(new string(cTemp.ToArray()));
cTemp.Clear();
sk.Pop();
}
else
{
sk.Push(c);
}
}
else if (sk.Count == 1)
{
cTemp.Add(c);
}
}
Console.WriteLine("获取的字符串:");
foreach (string str in strNeed)
{
Console.WriteLine(str);
strOrg= strOrg.Replace(str, strReplace);
}
Console.WriteLine("替换后的字符串:");
Console.WriteLine(strOrg);
Console.ReadKey();
}
GetValue(@"fjksdjfk$fesdfdds$ asss$dfdsfd$", @"\$", @"\$");