假如说现在有一个字符串:
{someone}'s wallet was stolen by {someone else} but the police who called {anyone} caught him.然后还有一个字符集合:List<string> people = new List<string> { "Tom", "Jack", "Charlie"};
要做的就是创建一个函数,把字符串中用{xxx}包围的地方替换成List里面的字符。
public string ReplaceItems(string str, List<string> items)
{
//....
}输出结果为:
Tom's wallet was stolen by Jack but the police who called Charlie caught him.字符串中{}数量不一定是3个,但{}的数量和对应的List集合size是相同的,{xxx}中的字符也不固定。
{someone}'s wallet was stolen by {someone else} but the police who called {anyone} caught him.然后还有一个字符集合:List<string> people = new List<string> { "Tom", "Jack", "Charlie"};
要做的就是创建一个函数,把字符串中用{xxx}包围的地方替换成List里面的字符。
public string ReplaceItems(string str, List<string> items)
{
//....
}输出结果为:
Tom's wallet was stolen by Jack but the police who called Charlie caught him.字符串中{}数量不一定是3个,但{}的数量和对应的List集合size是相同的,{xxx}中的字符也不固定。
解决方案 »
- 请教有关form线程的问题!!!!
- 寻求一正在表达式
- 顶者有分, 关于用Graphics画图的问题, 我重新画的时候,怎么还是在原来的图上画啊,
- 达人们c# 或javascript 字符截取.
- 酒店系统中的那种按钮表示的房态是以什么控件开发的?
- (高手请进)一个有点难度的问题,关于属性和字段
- 关于网络问题
- 请问有学过数据库的C#高手,学习C#与学习数据库比起来,哪个难呀?UP者有分。
- 怎么一行显示多个缩略图 然后重复这一行再显示另外几张
- 一个简单的成绩统计,求平均分跟最低分出错,不知道为什么
- 一个窗体最小化了,如何用代码让它恢复到原来的状态呢?
- 用C#做的WINFORM程序,编译后如何修改配置文件?
reg.Replace(input, "");
List<string> people = new List<string> { "Tom", "Jack", "Charlie"};
a = a.Replace("{someone}",people[0]).Replace("{someone else}",people[1]).Replace("{anyone}",people[2]);
Response.Write(a);
{
int l = 0, r = 0;
int n = items.Count;
string temp = "";
for (int i = 0; i < n; i++)
{
l = str.IndexOf("{", r);
temp += str.Substring(r, l - r);
temp += items[i];
r = str.IndexOf("}", l) + 1;
}
temp += str.Substring(r, str.Length - r);
return temp;
}
using System.Collections.Generic;
using System.Text.RegularExpressions;class Program
{
static void Main(string[] args)
{
string s = "{someone}'s wallet was stolen by {someone else} but the police who called {anyone} caught him.";
Dictionary<string, string> rule = new Dictionary<string, string>();
rule.Add("someone", "Tom");
rule.Add("someone else", "Jack");
rule.Add("anyone", "Charlie");
string result = RuleReplace(s, rule);
Console.WriteLine(result);
Console.ReadKey();
} /// <summary>
/// 特定的字符串替换方法
/// </summary>
/// <param name="src">原字符串</param>
/// <param name="rule">替换规则</param>
/// <returns>替换后的结果字符串</returns>
public static string RuleReplace(string src, Dictionary<string, string> rule)
{
return Regex.Replace(src, @"\{([^{}]+)\}", delegate(Match m)
{
if (rule.ContainsKey(m.Groups[1].Value))
{
return rule[m.Groups[1].Value];//返回替换掉的字符串
}
return m.Value;//原样返回
});
}
}
{
int k = 0;
StringBuilder sb = new StringBuilder();
for (int i = 0; i < str.Length; i++)
{
if (str[i] == '{')
{
while (i < str.Length && str[i] != '}') i++;
sb.Append(items[k++]);
}
else if (str[i] != '}') sb.Append(str[i]);
}
return sb.ToString();
}
int i= 0;
while (a.Contains("{")) //循环替换所有的“{”及内部内容。
{
string oldStr = strTemp.Substring(a.IndexOf("{"), a.IndexOf("}") - a.IndexOf("{") + 1); //获取第一个 {xxx} a= a.Replace(oldStr, people[i]);
i++;
}
{
string textToReplace = str;
Regex reg = new Regex(@"\{([^{}]+)\}"); foeach(string item in items)
{
textToReplace = reg.Replace(textToReplace, item, 1);
} return textToReplace;
}