2010-10-04 75 views
0

我试图解析出一个字符串,并且在某些情况下最后还有一个额外的“ - [某个数字]”。为例子,如何检测以数字结尾的字符串

而不是显示

Technologist 

它显示

Technologist - 23423 

我不想只是检查或分裂“ - ”因为有确实有其他的名字一个“ - ”在他们

谁能想到这去除多余的噪音等等的清洁方法:

技师 - 23423解析为技师

+2

不'技师 - 2 - 12345'解析为'Technologist - 2'还是'Technologist'? – 2010-10-04 19:37:42

+0

@迈克尔Petrotta - 我不会有这种情况下(因为我知道我的数据),但要完整:如果我有技术专家 - 234234我想它解决技术专家。因此,如果组合存在,删除最后一个空格 - 连字符组合后的所有数据?在我的例子中,我将永远不会有两组数字噪声(如 – leora 2010-10-04 19:39:33

+0

)。或者可以删除最后一个短划线后的所有数据,并对结果进行空间裁剪。 – 2010-10-04 19:41:14

回答

2

这看起来像一个情况下正则表达式,如@ “ - \ d + $”,在这种情况下。示例代码:

using System; 
using System.Text.RegularExpressions; 

class Test 
{ 
    static void Main() 
    { 
     Tidy("Technologist - 12345"); 
     Tidy("No trailing stuff"); 
     Tidy("A-B1 - 1 - other things"); 
    } 

    private static readonly Regex regex = new Regex(@"- \d+$"); 

    static void Tidy(string text) 
    { 
     string tidied = regex.Replace(text, ""); 
     Console.WriteLine("'{0}' => '{1}'", text, tidied); 
    } 
} 

注意,这个目前点负数。如果你把它想,你可以使用

new Regex(@"- -?\d+$"); 
+0

我如何去检查,如果我需要做一个整洁。我想我可以在我的所有记录中打电话给泰迪,但是对其他人不会做任何事情。 – leora 2010-10-04 19:41:16

+0

@ooo:是的,这比检查你是否需要整理更简单,然后只在必要时才这样做。 – 2010-10-04 19:47:09

0

试试这个正则表达式:

var strRegex = @"\s*-\s*\d+$"; 

var regex = new Regex(strRegexs); 

var strTargetString = "Technologist - 23423"; 

var res = myRegex.Replace(strTargetString, ""); 

这将在以下字符串的工作(所有被评估到Text):

Text - 34234 
Text -1 
Text -  342 
Text-3443 
相关问题