删除未知索引处的多个字符
Removing several chars at unknown index
所以我试图删除字符串中未知索引处的几个字符。
程序的目的是去除“<”之前的字符。
因此,例如: Te 应该产生输出 Tst 因此 E 和 < 都从字符串中删除。
此外,它应该能够删除多次出现的“<”。
例如,This< is<< Text 应该产生输出 Thi Text
我一直在尝试使用 char[] 和 StringBuilder,但似乎无法完全掌握它。
我目前被这段代码困住了,它没有按照我的意愿去做。
string input = Console.ReadLine();
int indexLocation = input.IndexOf("<");
int RemoveChar = indexLocation - 1;
Console.WriteLine(input.Remove(RemoveChar));
如果字符串有多个“<”并且“<”位于句子中间,则此方法无效。例如 He 输出只是 h
感谢任何答案或提示。我是初级程序员。
一种解决方案可能是使用 Stack<T>
。这样,当你遇到 <
时,你就从堆栈中弹出。
Stack<char> stack = new Stack<char>();
foreach (char c in "This< is<< Text")
{
if (c == '<')
{
if (stack.Any()) // Make sure the stack isn't empty
stack.Pop();
}
else
{
stack.Push(c);
}
}
string output = new string(stack.Reverse().ToArray());
输出:
Thi Text
一种简单的方法是向后遍历字符串并通过递增变量来跟踪找到的 <
个字符。然后,当我们找到一个不同的字符时,如果变量的值大于零,我们就将它递减。否则我们将字符添加到字符串构建器的开头:
var input = "This< is<< Text";
var output = new StringBuilder();
var charsToSkip = 0;
for (int i = input.Length - 1; i >= 0; i--)
{
if (input[i] == '<')
{
charsToSkip++;
}
else if (charsToSkip > 0)
{
charsToSkip--;
}
else
{
output.Insert(0, input[i]);
}
}
input = output.ToString();
尝试以下代码片段:
string input = Console.ReadLine();
do
{
int indexLocation = input.IndexOf("<");
int RemoveChar = indexLocation - 1;
input = input.Remove(RemoveChar, 2);
} while (Regex.Matches(input,@"<").Count != 0);
Console.WriteLine(input);
结果将是:
所以我试图删除字符串中未知索引处的几个字符。
程序的目的是去除“<”之前的字符。
因此,例如: Te
我一直在尝试使用 char[] 和 StringBuilder,但似乎无法完全掌握它。
我目前被这段代码困住了,它没有按照我的意愿去做。
string input = Console.ReadLine();
int indexLocation = input.IndexOf("<");
int RemoveChar = indexLocation - 1;
Console.WriteLine(input.Remove(RemoveChar));
如果字符串有多个“<”并且“<”位于句子中间,则此方法无效。例如 He
感谢任何答案或提示。我是初级程序员。
一种解决方案可能是使用 Stack<T>
。这样,当你遇到 <
时,你就从堆栈中弹出。
Stack<char> stack = new Stack<char>();
foreach (char c in "This< is<< Text")
{
if (c == '<')
{
if (stack.Any()) // Make sure the stack isn't empty
stack.Pop();
}
else
{
stack.Push(c);
}
}
string output = new string(stack.Reverse().ToArray());
输出:
Thi Text
一种简单的方法是向后遍历字符串并通过递增变量来跟踪找到的 <
个字符。然后,当我们找到一个不同的字符时,如果变量的值大于零,我们就将它递减。否则我们将字符添加到字符串构建器的开头:
var input = "This< is<< Text";
var output = new StringBuilder();
var charsToSkip = 0;
for (int i = input.Length - 1; i >= 0; i--)
{
if (input[i] == '<')
{
charsToSkip++;
}
else if (charsToSkip > 0)
{
charsToSkip--;
}
else
{
output.Insert(0, input[i]);
}
}
input = output.ToString();
尝试以下代码片段:
string input = Console.ReadLine();
do
{
int indexLocation = input.IndexOf("<");
int RemoveChar = indexLocation - 1;
input = input.Remove(RemoveChar, 2);
} while (Regex.Matches(input,@"<").Count != 0);
Console.WriteLine(input);
结果将是: