2013-04-12 69 views
0

第二给定角色之前,我有一个像获取使用正则表达式

[ABC].[XXX].sdfnwoaenwaf 
[ABC].[XXX].sdfnwoaenwaf 
[ABC].[XX1].sdfnwoaenwaf 
[ABC].[XX1].sdfnwoaenwaf 
[AB1].[XX3].sdfnwoaenwaf 
[AB2].[XX1].sdfnwoaenwaf 

我怎样才能得到第二点之前的所有字符串列表一切吗?例如[ABC].[XXX]为第一个。

+0

没得到乌尔问题,U要删除的人物sdfnwoaenwaf“? –

+0

嗨@NewtonSheikh,我只需要获得一个新的名单,只有[ABC]。[XXX]。 – Jessica

回答

1

你可以尝试一个正则表达式或使用String类的LastIndexOf方法或String类的Split方法。

的Regex

var toMatch = "[ABC].[XXX].sdfnwoaenwaf"; 

var pattern = new Regex("(.*?\\..*?)(:?\\.)"); 

var beforeSecondDot = pattern.Match(toMatch); 

var stringBeforeSecondDot = beforeSecondDot.Groups[1].Value; 

String.LastIndexOf

var toMatch = "[ABC].[XXX].sdfnwoaenwaf"; 

var indexOfLastDot = toMatch.LastIndexOf('.'); 

var beforeSecondDot = toMatch.Substring(0, indexOfLastDot); 

String.Split

var toMatch = "[ABC].[XXX].sdfnwoaenwaf"; 

var parts = toMatch.Split('.'); 

var beforeSecondDot = String.Join(".", parts.Take(2)); 
+0

谢谢! :)你的回答给了我超过我的预期。 :) – Jessica

1
string x = "[AB2].[XX1].sdfnwoaenwaf"; 

Regex regex = new Regex("([^.]+\\.[^.]+)\\."); 
Match match = regex.Match(x); 
if (match.Success) 
{ 
    Console.WriteLine(match.Groups[1].Value); 
} 

输出:

[AB2].[XX1] 
1
List<string> finalStrings = new List<string>(); 
List<string> strings = new List<string>(); 
strings.Add("[ABC].[XXX].sdfnwoaenwaf"); 
strings.Add("[ABC].[XXX].sdfnwoaenwaf"); 
strings.Add("[ABC].[XX1].sdfnwoaenwaf"); 
strings.Add("[ABC].[XX1].sdfnwoaenwaf"); 
strings.Add("[ABC].[XX3].sdfnwoaenwaf"); 
strings.Add("[ABC].[XX1].sdfnwoaenwaf"); 

foreach (var item in strings) 
{ 
    Regex rex = new Regex("(.*)\\."); 
    string[] y = rex.Split(item); 
    finalStrings.Add(y[1]); 
}