2

我在函数的顶部有这个:

string n = "";
string test = "T256=" + n;

但是测试只是“T256 =”

如果在字符串 n 我正在做 n = "\"";

那么 test 是 "T256=\" 但 \ 是否意味着引号?

如果我有,我怎么能取出一个空字符串:

T256="Hello" 所以我只能取出 Hello 但如果我有 T256="" 是什么意思?由于我的程序正在跳过一个空字符串“”

但我需要使用它。

例如在我的文件中是这样的:

T256="hello"

T256=""

T256=""

T256="hi"

那么我如何记住这两个 T256="" ?如果我不这样做,它会将下一个单词放在第一个空的 T256="" 中,它会像:

T256="hello"

T256="hi"

它不是它应该的方式。它应该是这种格式,这是好的格式:

T256="hello"

T256=""

T256=""

T256=hello"

所以这是我的代码,我在其中取出了文本,但由于某种原因,它没有取出两个标签之间没有文本的地方。

字符串 startTag = "T256=\""; 字符串 endTag = "\"";

如果这两个标签之间有文本,它将把它取出,但如果这个标签之间没有文本,它将跳到标签之间有文本的下一行。

我需要用 T256="" 取任何一行,即使它在 "" 之间是空的

所以在文本文件中我会看到一个空格或“”,例如文本文件应该如下所示:

Hello

""

Hi

""

""

Hello

或者,如果不是“”,则为空,当我放回文本时,它也应该放回空格或空字符串。

这是我取出文本的代码:

private void parseText(string originalFile, BackgroundWorker worker)
        {
            FormText("Parsing Text");
            int lineNumber = 0;
            string startTag = "T256=\"";
            string endTag = "\"";
            int index = 0;
            int startTagWidth = startTag.Length;
            int endTagWidth = endTag.Length;
            int fileLength = originalFile.Length;
            w = new StreamWriter(@"d:\testingdeponias.txt");
            while (true)
            {
                if (index > originalFile.LastIndexOf(startTag))
                {
                    break;
                }
                int startTagIndex = originalFile.IndexOf(startTag, index);
                int stringIndex = startTagIndex + startTagWidth;
                index = stringIndex;

                int endTagIndex = originalFile.IndexOf(endTag, index);
                int stringLength = endTagIndex - stringIndex;
                if (stringLength == 0)
                {
                }
                else
                {
                    //worker.ReportProgress(20);
                    string test = originalFile.Substring(stringIndex, stringLength);
                    if (test == "")
                    {
                        MessageBox.Show(test);
                    }

但是测试永远不是“”我在那里使用断点并且它永远不会到达 MessageBox

4

2 回答 2

2

"\""意味着\"

在 .NET[C#] 中,我们不能简单地编写",因为这Char在语言中具有一些特殊功能。

所以我们必须编写 Char 的转义序列"

Escape 序列以实际的 Char 开头\

例如:\ is的转义序列\\

所以在你的情况下,"将被写成\"并对其进行字符串化,\"变为"\""

代码 :

string n = "\"\"";
string test = "T256=" + n; // same as string test = "T256=\"\""

阅读更多关于Escape Sequence

于 2012-05-24T03:00:08.947 回答
1

它非常简单。

简单地测试

  • 字符串化引号:" -> 带有转义字符 \" -> 字符串化 "\""
  • 字符串化两个引号:"" -> 带有转义字符 \"\" -> 字符串化 "\"\""

串针 = "256TT=\"\"";

等于 256TT=""

并且每当程序找到它时,只需打印出您的消息框或您想要做的任何事情:在您的文本文件中放置一个空格或放置两个引号,如 \"\"

就是这样。

于 2012-05-24T02:14:09.343 回答