我Table URL
,我只想选择Table Name
。实现它的最佳方法是什么?
网址:
"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
注意:这些网址大多数时间都会db://SQL Table.Table.[dbo].
,所以我使用以下代码来实现这一目标:
CODE:
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获取表名的最佳方法是什么?
答案 0 :(得分:3)
你可以获得'['和']'的最后一个索引并获取其中的子串:
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 );
当然,这假设您可以保证表名中没有括号。
答案 1 :(得分:1)
您可以使用此正则表达式匹配紧接在字符串末尾出现的最后一组[]
内的最后一个内容:
\[([^\[^\]]*)\]$
在输入db://SQL Table.Table.[dbo].[DirectoryType]
,您抓取字符串DirectoryType
。
$
符号表示字符串的结尾。
您可以在行动here中看到它。
一个例子:
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;
答案 2 :(得分:0)
var matcher = new System.Text.RegularExpressions.Regex(@"^.*\[(?<table>.*?)\]""$", RegexOptions.Compiled);
var results = matcher.Match(/*your input string*/);
在调试器中检查结果,您将找到如何提取您要查找的内容。
请注意,此模式假设您的数据实际上包含问题中显示的引号。
答案 3 :(得分:0)
你做得对,我刚用split
'.'
,我假设你的网址包含最低anything.[DirectoryType]"
string op = tableURL.Split('.')[tableURL.Split('.').Length - 1].Replace("[", "").Replace("]", "");