从字符串中获取数字,布尔值和字符串

时间:2016-11-25 20:03:01

标签: c#

我的字符串中有字符串类型,名称2加倍和1布尔值。请帮我解析一下。

dependencies {
    compile 'com.android.support:appcompat-v7:23.3.0'
    compile 'com.android.support:design:23.3.0'
    compile project(':gvr-android-sdk/libraries:common')
    compile project(':gvr-android-sdk/libraries:commonwidget')
    compile project(':gvr-android-sdk/libraries:panowidget')
    compile project(':gvr-android-sdk/libraries:videowidget')
    compile 'com.google.protobuf.nano:protobuf-javanano:3.0.0-alpha-7'

然后我卡住了。对我来说,2个双打中的哪个是价格而且重量是什么并不重要。

2 个答案:

答案 0 :(得分:4)

您可以使用string.Split

string line = "Candy Red Riding Hood,0.17,2.21,true";

var parts = line.Split(',');

string stringValue = parts[0];
double weight = double.Parse(parts[1], CultureInfo.InvariantCulture);
double price = double.Parse(parts[2], CultureInfo.InvariantCulture);
bool boolValue = Convert.ToBoolean(parts[3]);

答案 1 :(得分:1)

如果你知道你的线的模式,那么你可以定义一个正则表达式和其中的组。

https://regex101.com/r/kLphgk/1

代码看起来像这样

var rgx = new Regex(@"^(?<type>\w+)\s*(?<name>[^,]+),(?<weight>\d+(.\d+)?),(?<price>\d+(.\d+)?),(?<state>(true|false))$");
var match = rgx.Match("Candy Red Riding Hood,0.17,2.21,true");
var obj = new {
    Type = match.Groups["type"].Value,
    Name = match.Groups["name"].Value,
    Price = double.Parse(match.Groups["price"].Value),
    Weight = double.Parse(match.Groups["weight"].Value),
    State = bool.Parse(match.Groups["state"].Value)
};