如何获取未知长度的子字符串

时间:2014-09-25 09:43:00

标签: c# string substring indexof

我有一个字符串,表名每次都会更改。如何找到子字符串并使用其value.eg

示例字符串:

  

表' ProductCostHistory'。计数1,逻辑5,物理0

if (line.Contains("Count"))
{
    int index = line.IndexOf("Count");
    string substring2 = line.Substring(index, 12);
    string scancountval = substring2.Substring(11);
}

现在我怎么能对表格ProductCostHistory做同样的事情,表格的名称每次都会改变?

1 个答案:

答案 0 :(得分:1)

您可以使用String.SubstringString.IndexOf等字符串方法。后者用于查找给定子字符串的起始索引。如果找不到,则返回-1,因此这也可用于避免额外的String.Contains - 检查。它还有一个重载,它使用一个整数来指定开始搜索的字符位置(下面用于endIndex):

string text = "Table 'ProductCostHistory'. Count 1, logical 5, physical 0";
int index = text.IndexOf("Table '");
if(index >= 0)  // no Contains-check needed
{
    index += "Table '".Length; // we want to look behind it
    int endIndex = text.IndexOf("'.", index);
    if(endIndex >= 0)
    {
        string tableName = text.Substring(index, endIndex - index);
        Console.Write(tableName); // ProductCostHistory
    }
}

请注意,如果您希望进行不区分大小写的比较,则.NET字符串会区分大小写:

int index = text.IndexOf("Table '", StringComparison.CurrentCultureIgnoreCase);