繁体   English   中英

分割字符串值C#

[英]splitting a string value c#

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

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

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

string name = s.Split(',')[0].Split('=')[1].Trim();

说明: Split,

{ Engineer = CARL HARRISON
_HandHeldAvailability = H
_HASHHT = True
_HHTSTATUS =  }

采取这第一个要素给

{ Engineer = CARL HARRISON

Split通过=得出:

{ Engineer_
_CARL HARRISON

拿这个的第二个要素给

_CARL HARRISON

所以Trim给出:

CARL HARRISON

我用_代替了前导空格和尾随空格,以使它们清晰可见。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM