我有一个字符串值,并希望仅获取工程师名称,例如在这种情况下,“CARL HARRISON”。
"{ Engineer = CARL HARRISON, HandHeldAvailability = H, HASHHT = True, HHTSTATUS = }"
名称可以是不同的长度,但总是采用相同的格式。
答案 0 :(得分:6)
string name = s.Split(',')[0].Split('=')[1].Trim();
说明:Split
,
给出了
{ Engineer = CARL HARRISON
_HandHeldAvailability = H
_HASHHT = True
_HHTSTATUS = }
取第一个元素给出
{ Engineer = CARL HARRISON
Split
的{p> =
给出了:
{ Engineer_
_CARL HARRISON
取第二个元素给出
_CARL HARRISON
以便Trim
给出:
CARL HARRISON
我已将_
替换为前导和尾随空格,以使其清晰。
答案 1 :(得分:6)
string regex = @"{ Engineer = (?<Name>.*), HandHeldAvailability";
string input = "{ Engineer = CARL HARRISON, HandHeldAvailability = H, HASHHT = True, HHTSTATUS = }";
string engineerName = "";
Match match = Regex.Match(input, regex);
if(match.Success && match.Groups["Name"] != null)
{
engineerName = match.Groups["Name"].Value;
}
正则表达式允许您验证输入字符串是否匹配(否则match.Success将为false),并允许在输入格式更改时轻松更改它。您也可以轻松匹配其他部分。
编辑:如果你经常调用这个函数(即在循环中),那么你也可以编译正则表达式:
public class YourDataClass {
private static Regex regex = new Regex(@"{ Engineer = (?<Name>.*), HandHeldAvailability", RegexOptions.Compiled);
public string GetNameFromInput(string input) {
var result = string.Empty;
Match match = regex.Match(input);
if(match.Success && match.Groups["Name"] != null)
{
result = match.Groups["Name"].Value;
}
return result;
}
}