从字符串中获取特定单词

本文关键字:单词 获取 字符串 | 更新日期: 2023-09-27 18:00:44

我有Table URL,我只想选择Table Name。实现这一目标的最佳方法是什么?

URL:

"db://SQL Table.Table.[dbo].[DirectoryType]" 
"db://SQL Table.Table.[dbo].[IX_AnalysisResult_ConceptVariations]" 
"db://SQL Table.Table.[dbo].[IX_AnalysisResult_DocXConcepts]" 

所需输出:

DirectoryType
IX_AnalysisResult_ConceptVariations
IX_AnalysisResult_DocXConcepts

注意:这些URL在大多数时候都有db://SQL Table.Table.[dbo].,所以我使用以下代码来实现这一点:

代码:

var trimURL = tableURL.Replace("db://SQL Table.Table.[dbo].", String.Empty).Replace("[",String.Empty).Replace("]",String.Empty);

输出:

DirectoryType
IX_AnalysisResult_ConceptVariations
IX_AnalysisResult_DocXConcepts

如果由于某种原因URL前缀被更改,那么我的代码将无法工作。那么,从这些类型的URL中获取表名的最佳方法是什么呢?

从字符串中获取特定单词

您可以获取'[]和']'的最后一个索引,并获取其中的子字符串:

var startIndex = tableUrl.LastIndexOf('[') + 1; // +1 to start after opening bracket
var endIndex = tableUrl.LastIndexOf(']');
var charsToRead = (startIndex - endIndex) - 1; // -1 to stop before closing bracket
var tableName = tableUrl.Substring( startIndex, charsToRead );

当然,这是假设您可以保证表名中没有括号。

参考文献:
String.Substring
的String.LastIndex

您可以使用此正则表达式来匹配紧接在字符串末尾的最后一组[]中的最后一个内容:

'[([^'[^']]*)']$

在输入db://SQL Table.Table.[dbo].[DirectoryType]处,获取字符串DirectoryType

$符号表示字符串的末尾。

你可以在这里看到它的作用。

一个例子:

var match = new System.Text.RegularExpressions.Regex(@"'[([^'[^']]*)']$", RegexOptions.Singleline);
Match match_result = match.Match("db://SQL Table.Table.[dbo].[DirectoryType]");
string result = "";
if (match_result.Groups.Count > 1)
    result = match_result.Groups[1].Value;
    //result = "DirectoryType"

记住using System.Text.RegularExpressions;

var matcher = new System.Text.RegularExpressions.Regex(@"^.*'[(?<table>.*?)']""$", RegexOptions.Compiled);
var results = matcher.Match(/*your input string*/);

在调试器中检查结果,您会发现如何提取您要查找的内容。

请注意,此模式假设您的数据实际上包括问题中显示的引号。

你做得对,我刚刚在'.'上使用了split,我假设你的url包含最小的anything.[DirectoryType]"

string op = tableURL.Split('.')[tableURL.Split('.').Length - 1].Replace("[", "").Replace("]", "");