在C#中你可以将字符串拆分成变量吗?

时间:2014-06-02 09:31:52

标签: c# string

我最近遇到了一个PHP代码,其中CSV字符串被分成两个变量:

list($this->field_one, $this->field_two) = explode(",", $fields);

我把它变成了:

string[] tmp = s_fields.Split(',');
field_one = tmp[0];
field_two = tmp[1];

在没有创建临时数组的情况下是否存在C#等价物?

3 个答案:

答案 0 :(得分:0)

Jon Skeet说的是对的。 GC会做的,不用担心。 但是如果你非常喜欢这种语法(这是相当可观的),我猜你可以使用它。

public static class MyPhpStyleExtension
{
    public void SplitInTwo(this string str, char splitBy, out string first, out string second)
    {
        var tempArray = str.Split(splitBy);
        if (tempArray.length != 2) {
            throw new NotSoPhpResultAsIExpectedException(tempArray.length);
        }

        first = tempArray[0];
        second = tempArray[1];
    }
}

写这段代码我几乎感到内疚。希望这会做到这一点。

答案 1 :(得分:0)

你这个非常狭隘的问题的答案是否定的。 C#不提供多任务'功能,因此您无法从任何内容中提取任意值集(例如Split())并将其分解为单个命名变量。

通过使用out参数编写参数,可以为特定数量的变量提供解决方法。请参阅@vlad以获得答案。

但你为什么要这样做? C#提供了一系列令人印象深刻的功能,可以让你拆分字符串并以各种不同的方式处理它们,而不需要多次分配'应该几乎没有被注意到。

解析字符串通常涉及其他操作,例如处理格式错误,修剪空格,大小写折叠。可能少于2个字符串或更多。要求可能会随着时间而变化当你准备好更强大的字符串解析器时,C#将会等待。

答案 2 :(得分:0)

您可以使用以下方法:

- 创建一个继承自动态对象的类。

- 创建一个本地字典,用于将变量值存储在继承的类中。

- 取消TryGetMember和TrySetMember函数,从字典中获取和设置值。

- 现在,您可以拆分字符串并将其放入字典中,然后访问您的变量,如:

dynamicObject.var1
相关问题