检查String是否包含引号之间的内容

时间:2016-12-08 14:47:13

标签: c#

我正在编写用户可以输入文档的应用程序。然后我阅读文档的每一行,并进一步使用属性。 在每一行中,我们有5个属性。属性由分号分隔。

例如: 如果属性名称中包含semicolo,则用户将输入属性,然后在Document中输入: “测试;用”

现在我想检查属性是否在引号中并忽略它。你们会怎么做?

以下是重要的代码段:

foreach (string line in lines)
{
    if (line == "")
    {
        continue;
    }

    if (lineindex > lines.Length)
    {
        continue;
    }
    lineindex++;
    string[] words = line.Split(';'); // i would add here a if statement
    foreach (string word in words)
    {
        count++; 
        if (count == 6)
        {
            attribNewValue = "";
            maskName = "";
            actualAttrbValue = "";
            actualAttrbName = "";
            attribNameForEdit = "";
            count = 1;
            maskexist = false;
            attribexist = false;
        }
        else
        {
            // Or here to each word
            if (count == 1)
            {
                maskName = word;
            }
            else if (count == 2)
            {
                actualAttrbName = word;
            }
            else if (count == 3)
            {
                actualAttrbValue = word;
            }
            else if (count == 4)
            {
                attribNameForEdit = word;
            }
            else if (count == 5)
            {
                attribNewValue = word;
            }       
        }

提前谢谢!

1 个答案:

答案 0 :(得分:4)

您可以使用String.IndexOf(char value)String.LastIndexOf(char value)来确定:

string[] words;
int semicolonIndex = line.IndexOf(';');
int firstQuoteIndex = line.IndexOf('"');
int lastQuoteIndex = line.LastIndexOf('"');

if (firstQuoteIndex == lastQuoteIndex)
    continue;

if (semicolonIndex > firstQuoteIndex && semicolonIndex < lastQuoteIndex)
    words = line.Split(';');

更多信息:

IndexOf()https://msdn.microsoft.com/en-us/library/system.string.indexof(v=vs.110).aspx

LastIndexOf()https://msdn.microsoft.com/en-us/library/system.string.lastindexof(v=vs.110).aspx

正如上面提到的评论之一,这也可以用比我的解决方案更少的代码行使用正则表达式来实现,但是衡量你的技能水平(没有冒犯)我认为你更容易阅读,理解和开始使用。无论是否有更优雅的解决方案,字符串操作都是一个非常基本的东西,熟悉String类中的所有方法都是很好的,如下所示:https://msdn.microsoft.com/en-us/library/system.string_methods(v=vs.110).aspx < / p>

最后,虽然这纯粹是开发者偏好,但我建议您使用String.Empty代替""。这使得您的代码的意图对其他读者/开发者更明确。通过使用"",人们可能会问&#34;他们是否意味着使用空字符串,或者他们是否输了一个错字并且没有分配他们认为他们分配的内容?&# 34;通过使用String.Empty,毫无疑问您打算使用空字符串。所以我会if (line == String.Empty) continue;代替if (line == "") continue;