我有一个程序,您可以在其中输入字符串。但我希望删除引号“”之间的文字。
示例:
in:今天是一个非常“美好而热”的日子。
out:今天是一个非常“热”的日子。
Console.WriteLine("Enter text: ");
text = Console.ReadLine();
int letter;
string s = null;
string s2 = null;
for (s = 0; s < text.Length; letter++)
{
if (text[letter] != '"')
{
s = s + text[letter];
}
else if (text[letter] == '"')
{
s2 = s2 + letter;
letter++;
(text[letter] != '"')
{
s2 = s2 + letter;
letter++;
}
}
}
我不知道如何在控制台的引号之间写入没有文本的字符串。 我不允许使用复制方法,如正则表达式。
答案 0 :(得分:8)
这应该可以解决问题。它会检查字符串中的每个字符是否有引号。
如果找到引号,则将quotesOpened
标记设置为true
,因此它将忽略任何后续字符。
当遇到另一个引号时,它会将标志设置为false
,因此它将继续复制字符。
Console.WriteLine("Enter text: ");
text = Console.ReadLine();
int letterIndex;
string s2 = "";
bool quotesOpened = false;
for (letterIndex= 0; letterIndex< text.Length; letterIndex++)
{
if (text[letterIndex] == '"')
{
quotesOpened = !quotesOpened;
s2 = s2 + text[letterIndex];
}
else
{
if (!quotesOpened)
s2 = s2 + text[letterIndex];
}
}
希望这有帮助!
答案 1 :(得分:6)
没有正则表达式,我更喜欢,但没关系:
string input = "abc\"def\"ghi";
string output = input;
int firstQuoteIndex = input.IndexOf("\"");
if (firstQuoteIndex >= 0)
{
int secondQuoteIndex = input.IndexOf("\"", firstQuoteIndex + 1);
if (secondQuoteIndex >= 0)
{
output = input.Substring(0, firstQuoteIndex + 1) + input.Substring(secondQuoteIndex);
}
}
Console.WriteLine(output);
它的作用:
"
"
"
和第二部分,包括第二部分"
您可以通过搜索字符串结尾并替换所有匹配项来自行改进。你必须记住新的第一个索引&#39;你必须搜索。
答案 2 :(得分:3)
首先我们需要拆分字符串,然后删除奇数项:
JSON
答案 3 :(得分:2)
string text = @" Today is a very ""nice"" and hot day. Second sentense with ""text"" test";
Regex r = new Regex("\"([^\"]*)\"");
var a = r.Replace(text,string.Empty);
请试一试。
答案 4 :(得分:1)
这可能是一个解决方案:
String cmd = "This is a \"Test\".";
// This is a "".
String newCmd = cmd.Split('\"')[0] + "\"\"" + cmd.Split('\"')[2];
Console.WriteLine(newCmd);
Console.Read();
您只需将文字拆分为“,然后将两个部分一起添加并添加旧的”。不是一个非常好的解决方案,但无论如何都可以。
€二叔:
cmd[0] = "This is a "
cmd[1] = "Test"
cmd[2] = "."
答案 5 :(得分:1)
你可以这样做:
Console.WriteLine("Enter text: ");
var text = Console.ReadLine();
var skipping = false;
var result = string.Empty;
foreach (var c in text)
{
if (!skipping || c == '"') result += c;
if (c == '"') skipping = !skipping;
}
Console.WriteLine(result);
Console.ReadLine();
结果字符串是通过添加原始字符串中的字符来创建的,只要我们不在引号之间(使用skipping
变量)。
答案 6 :(得分:1)
使用引号的所有索引使用子字符串删除引号之间的文本。
static void Main(string[] args)
{
string text = @" Today is a very ""nice"" and hot day. Second sentense with ""text"" test";
var foundIndexes = new List<int>();
foundIndexes.Add(0);
for (int i = 0; i < text.Length; i++)
{
if (text[i] == '"')
foundIndexes.Add(i);
}
string result = "";
for(int i =0; i<foundIndexes.Count; i+=2)
{
int length = 0;
if(i == foundIndexes.Count - 1)
{
length = text.Length - foundIndexes[i];
}
else
{
length = foundIndexes[i + 1] - foundIndexes[i]+1;
}
result += text.Substring(foundIndexes[i], length);
}
Console.WriteLine(result);
Console.ReadKey();
}
输出:今天是非常&#34;&#34;炎热的一天。第二次与#34;&#34;测试&#34 ;;