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

本文关键字:未知 字符串 何获取 获取 | 更新日期: 2023-09-27 18:24:17

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

示例字符串:

表"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执行同样的操作,其中表的名称每次都会更改?

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

您可以使用像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);