展开全部
按思路继续完成吧,已经说的很清楚了,你应该能搞定
这个是替换单个字符的
internal void ChangeWchar(/*string mStr,string findStr,string replace str*/)
{
string str="my !name is ****!";
string C1="!", C2="*", D1="*", D2="#";
string resultStr = "";
for (int i = 0; i < str.Length; i++)
{
if (string.Compare(C1, str.Substring(i,1)) == 0)
resultStr += C2;
else if (string.Compare(D1, str.Substring(i,1)) == 0)
resultStr += D2;
else
resultStr += str.Substring(i,1);
}
}
下面是替换串的
class FindReplaceStrStru
{
public int s, e;
}
internal void ChangeStr(/*自定义参*/)
{
string str = "my !name is ****!";
string C1 = "!", C2 = "*", D1 = "*", D2 = "#";//设定优先级,若要替换的c1串中含有c2串,如:c1="12345" c2="23"
string resultStr = "";
//以c1优先为例子。
//先定义一个“碎片”数组,只为了方便说明问题而定义,实际考虑效率可去掉,并改写函数
//此段是保存不包含优先级1的字符串 - 段位置。
List<FindReplaceStrStru> rp2list = new List<FindReplaceStrStru>();
int sID = 0, eID = 0;
while (true)
{
eID = sID;
sID = str.IndexOf(C1, sID);
if (sID >= 0)
{
rp2list.Add(new FindReplaceStrStru());
rp2list[rp2list.Count - 1].s = eID == 0 ? 0 : eID + C1.Length;//此处若首次查找在0位置成功找到,可能会加一条无用的段,可在这这前加个判断是否为零,若为则不加
rp2list[rp2list.Count - 1].e = sID;
sID += C1.Length;
//画图你就明白了如:
// |*****&&&&&****&&&*&&&&&****&&&&&|取不包含优先级1的段。
}
else
break;
}
//if((sID)<str.Length)
//最后检查一下,若没有到未尾,则加上尾段。
//到此你可以你用查找单个字符的思路,用重新连接一个字符串的方式,而不是直接替换,因为要 替换的c1长度为2,但替换后的c2可能长度为3,所以会改变长度,不可直接替换,用重新连接一个新串的方法
//到此应该可以解决了,若搞不定可以留言。
}
这个是替换单个字符的
internal void ChangeWchar(/*string mStr,string findStr,string replace str*/)
{
string str="my !name is ****!";
string C1="!", C2="*", D1="*", D2="#";
string resultStr = "";
for (int i = 0; i < str.Length; i++)
{
if (string.Compare(C1, str.Substring(i,1)) == 0)
resultStr += C2;
else if (string.Compare(D1, str.Substring(i,1)) == 0)
resultStr += D2;
else
resultStr += str.Substring(i,1);
}
}
下面是替换串的
class FindReplaceStrStru
{
public int s, e;
}
internal void ChangeStr(/*自定义参*/)
{
string str = "my !name is ****!";
string C1 = "!", C2 = "*", D1 = "*", D2 = "#";//设定优先级,若要替换的c1串中含有c2串,如:c1="12345" c2="23"
string resultStr = "";
//以c1优先为例子。
//先定义一个“碎片”数组,只为了方便说明问题而定义,实际考虑效率可去掉,并改写函数
//此段是保存不包含优先级1的字符串 - 段位置。
List<FindReplaceStrStru> rp2list = new List<FindReplaceStrStru>();
int sID = 0, eID = 0;
while (true)
{
eID = sID;
sID = str.IndexOf(C1, sID);
if (sID >= 0)
{
rp2list.Add(new FindReplaceStrStru());
rp2list[rp2list.Count - 1].s = eID == 0 ? 0 : eID + C1.Length;//此处若首次查找在0位置成功找到,可能会加一条无用的段,可在这这前加个判断是否为零,若为则不加
rp2list[rp2list.Count - 1].e = sID;
sID += C1.Length;
//画图你就明白了如:
// |*****&&&&&****&&&*&&&&&****&&&&&|取不包含优先级1的段。
}
else
break;
}
//if((sID)<str.Length)
//最后检查一下,若没有到未尾,则加上尾段。
//到此你可以你用查找单个字符的思路,用重新连接一个字符串的方式,而不是直接替换,因为要 替换的c1长度为2,但替换后的c2可能长度为3,所以会改变长度,不可直接替换,用重新连接一个新串的方法
//到此应该可以解决了,若搞不定可以留言。
}
展开全部
/// <summary>
/// 字符串替换方法
/// </summary>
/// <param name="myStr">需要替换的字符串</param>
/// <param name="displaceA">需要替换的字符</param>
/// <param name="displaceB">将替换为</param>
/// <returns></returns>
private string displace(string myStr,string displaceA,string displaceB)
{
string[] strArrayA = Regex.Split(myStr, displaceA);
for (int i = 0; i < strArrayA.Length - 1; i++)
{
strArrayA[i] += displaceB;
}
string returnStr = "";
foreach (string var in strArrayA)
{
returnStr += var;
}
return returnStr;
}
/// 字符串替换方法
/// </summary>
/// <param name="myStr">需要替换的字符串</param>
/// <param name="displaceA">需要替换的字符</param>
/// <param name="displaceB">将替换为</param>
/// <returns></returns>
private string displace(string myStr,string displaceA,string displaceB)
{
string[] strArrayA = Regex.Split(myStr, displaceA);
for (int i = 0; i < strArrayA.Length - 1; i++)
{
strArrayA[i] += displaceB;
}
string returnStr = "";
foreach (string var in strArrayA)
{
returnStr += var;
}
return returnStr;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
最简单的就用楼上的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
最简单的方法
string ss = "adfsadfyesasdfasdf";
ss = ss.Replace("yes", "no");
string ss = "adfsadfyesasdfasdf";
ss = ss.Replace("yes", "no");
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询