从函数返回的C#trim字符串

时间:2013-12-06 11:53:46

标签: c# string

我正在尝试修剪从函数返回的可变长度字符串的结尾。

该函数返回一个格式为的字符串:     PC类型+“\ t \ t”+ MACAddress +“\ t \ t”+ NumPC +“\ t \ t”+日期

例如:

  

服务器00:11:22:33:44:55 124 06-12-13

     

PC AA:BB:CC:DD:EE:FF 16 01-01-12

我试图在MAC地址后删除字符串的一部分,我尝试使用下面的方法,但似乎没有太多运气。

int index = Licences.LastIndexOf(":");
if (index > 0)
Licences = Licences.Substring(0, index + 2);

有优雅的方法吗?

3 个答案:

答案 0 :(得分:1)

因此MAC address是由六个十六进制数字组成的六组,用连字符( - )或冒号(:)分隔,您可以使用正则表达式来匹配服务器名称和MAC地址:

string input = "Server 00:11:22:33:44:55 124 06-12-13";
var match = Regex.Match(input, ".+[0-9a-f]{2}([-:][0-9a-f]{2}){5}");
if (match.Success)    
   string result = match.Value; // "Server 00:11:22:33:44:55"

答案 1 :(得分:0)

            String Licences = "Server 00:11:22:33:44:55 124 06-12-13";
            String [] names = Licences.Split(' ');
            Licences="";
            for (int i = 0; i < names.Length - 2; i++)
                Licences += names[i] + " ";

            Licences=Licences.Trim();

答案 2 :(得分:0)

你可以使用这样的正则表达式:

var expression = @"(?<=:..)\s";
var targetString = "PC AA:BB:CC:DD:EE:FF 16 01-01-12";
var splitString = Regex.Split(targetString, expression).last();

表达式将匹配

 \s:    any whitespace
 (?<=   that occurs directly after
 :..    a colon with any two characters after it.

此外,您可以将.更改为[A-Fa-f0-9](两次)以确保它实际上只匹配十六进制数字。