我正在尝试修剪从函数返回的可变长度字符串的结尾。
该函数返回一个格式为的字符串: 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);
有优雅的方法吗?
答案 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]
(两次)以确保它实际上只匹配十六进制数字。