从字符串中获取特定单词

时间:2015-07-01 16:01:47

标签: c# silverlight-5.0

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获取表名的最佳方法是什么?

4 个答案:

答案 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 );

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

参考文献:
String.Substring
String.LastIndexOf

答案 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("]", "");