public static string shita1(string st1)
{
string st2 = "", stemp = st1;
int i;
for(i=0; i<stemp.Length; i++)
{
if (stemp.IndexOf("cbc") == i)
{
i += 2 ;
stemp = "";
stemp = st1.Substring(i);
i = 0;
}
else
st2 = st2 + stemp[i];
}
return st2;
}
static void Main(string[] args)
{
string st1;
Console.WriteLine("enter one string:");
st1 = Console.ReadLine();
Console.WriteLine(shita1(st1));
}
}
我从我的大学获得挑战,挑战是从字符串中移动任何“cbc”字符......
这是我的代码......当我只使用一个“cbc”时它可以工作但是当我使用其中的2个时它会卡住...请帮助:)
答案 0 :(得分:1)
IndexOf Method为您提供了解所需的一切。 根据{{3}}。
报告指定的第一次出现的从零开始的索引 此实例中的Unicode字符或字符串。该方法返回 如果在此实例中找不到字符或字符串,则为-1。
这意味着只要返回的索引不是-1,您就可以创建一个重复的循环,并且您不必逐字逐句地遍历字符串测试。
答案 1 :(得分:0)
我认为这应该只是在一些例子上测试它。不使用string.Replace或IndexOf
static void Main(string[] args)
{
Console.WriteLine("enter one string:");
var input = Console.ReadLine();
Console.WriteLine(RemoveCBC(input));
}
static string RemoveCBC(string source)
{
var result = new StringBuilder();
for (int i = 0; i < source.Length; i++)
{
if (i + 2 == source.Length)
break;
var c = source[i];
var b = source[i + 1];
var c2 = source[i + 2];
if (c == 'c' && c2 == 'c' && b == 'b')
i = i + 2;
else
result.Append(source[i]);
}
return result.ToString();
}
答案 2 :(得分:0)
您可以使用Replace
删除/替换另一个字符串中字符串的所有出现:
string original = "cbc_STRING_cbc";
original = original.Replace("cbc", String.Empty);
答案 3 :(得分:0)
如果您只想使用IndexOf方法从字符串中删除字符,则可以使用此代码。
public static string shita1(string st1)
{
int index = -1;
string yourMatchingString = "cbc";
while ((index = st1.IndexOf(yourMatchingString)) != -1)
st1 = st1.Remove(index, yourMatchingString.Length);
return st1;
}
此代码删除了您的所有输入字符串。
但你可以在一行中完成:
st1 = st1.Replace("cbc", string.Empty);
希望得到这个帮助。