面试的时候看到这道题,感觉还是有点意思.把代码写下来.如果有更好的代码 欢迎博友指教哈~
private static string getresult()
{
//原始字符串
string FirstStr = "%img.jpg%";
//需要替换成字符串
string ReplaceStr = "<src = 01.jpg>";
//准备替换的长字符串
string NeedReplaceStr = "1111%img.jpg%aaaaaa%img.jpg%bbbbbb%img.jpg%ccccccc%img.jpg%dddddd%img.jpg%%img.jpg%eeeeee%img.jpg%ffffff%img.jpg%%img.jpg%ggggggg%img.jpg%33333";
List<string> strarray = new List<string>();
int containsCount = 0;
while (NeedReplaceStr.Contains(FirstStr))
{
if (NeedReplaceStr.IndexOf(FirstStr) == 0)
{
strarray.Add(NeedReplaceStr.Substring(NeedReplaceStr.IndexOf(FirstStr), FirstStr.Length));
NeedReplaceStr = NeedReplaceStr.Remove(0, FirstStr.Length);
containsCount++;
}
else
{
strarray.Add(NeedReplaceStr.Substring(0, NeedReplaceStr.IndexOf(FirstStr)));
NeedReplaceStr = NeedReplaceStr.Remove(0, NeedReplaceStr.IndexOf(FirstStr));
}
}
strarray.Add(NeedReplaceStr);
string result = "";
Random ranforrepalce = new Random();
Thread.Sleep(100);
int mm = ranforrepalce.Next(0, containsCount);
int temp = 0;
foreach (string var in strarray)
{
if (var == FirstStr)
{
if (mm == temp)
{
result += ReplaceStr;
}
temp++;
}
else
{
result += var;
}
}
return result;
}
static void Main()
{ //测试输出10次看看效果
for (int i = 0; i < 10; i++)
{
Console.WriteLine(getresult());
}
Console.ReadLine();
}