拆分字符串值c#

时间:2010-01-05 00:18:05

标签: c# .net string

我有一个字符串值,并希望仅获取工程师名称,例如在这种情况下,“CARL HARRISON”。

"{ Engineer = CARL HARRISON, HandHeldAvailability = H, HASHHT = True, HHTSTATUS =  }"

名称可以是不同的长度,但总是采用相同的格式。

2 个答案:

答案 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;
    }
}