从字符串中获取特定单词
本文关键字:单词 获取 字符串 | 更新日期: 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("]", "");