50,523
社区成员
发帖
与我相关
我的任务
分享
[Test]
public void Test()
{
string[][] data = { new string[] { "XX", "11:20", "深圳" }
//, new string[] { "小七", "12:20", "上海" }
};
string template = "${1},请你于${2}来${3}开会,别迟到了";
foreach( var item in data ) {
//结果
StringBuilder sbResult = new StringBuilder();
//暂时存放数据
StringBuilder sbTemp = new StringBuilder();
StringBuilder sbTemp1 = new StringBuilder();
bool flag = false;//是否正在匹配${0}
for( int i = 0; i < template.Length; i++ ) {
var c = template[i];
var nextC = i < template.Length - 1 ? template[i + 1] : ' ';
if( c == '$' && nextC == '{' ) {
flag = true;
sbTemp1.Append(c);
}
else if( flag && c == '{' ) {
sbTemp1.Append(c);
continue;
}
else if( c == '}' && flag ) {
flag = false;
sbTemp1.Append(c);
int pos = 0;
if( int.TryParse(sbTemp.ToString(), out pos) ) {
if( pos > item.Length ) {
sbResult.Append("");
}
else {
sbResult.Append(item[pos - 1]);
}
}
else {
sbResult.Append(sbTemp1);
}
sbTemp.Length = 0;
sbTemp1.Length = 0;
}
else if( flag && c != '$' && c != '{' ) {
sbTemp.Append(c);
if( i == template.Length - 1 ) {
sbResult.Append(sbTemp);
}
}
else {
sbResult.Append(c);
}
}
Assert.AreEqual("XX,请你于11:20来深圳开会,别迟到了", sbResult.ToString());
}
}
String con="${1}今天在${2}开会";
if(con.indexOf("$")!=-1){
con=con.replaceAll("\\$\\{1\\}", "XX");
con=con.replaceAll("\\$\\{2\\}", "上海");
}
System.out.println(con+" ");