解析以分号分隔的列表

时间:2010-05-13 07:15:43

标签: c# .net algorithm csv

我有一个以分号分隔的值列表,例如:

strins s = "param1=true;param2=4;param3=2.0f;param4=sometext;";

我需要一个功能:

public bool ExtractBool(string parameterName, string @params);
public int ExtractInt(string parameterName, string @params);
public float ExtractFloat(string parameterName, string @params);
public string ExtractString(string parameterName, string @params);

.net中是否有特殊功能可以帮助我使用以分号分隔的列表?

PS:参数名称在列表中相等。

4 个答案:

答案 0 :(得分:3)

作为一个起点,您需要的是String.Split()方法 - 它会将您的字符串拆分为字符串数组。

你会在网上找到大量这样的例子。

答案 1 :(得分:1)

对于字符串更好,您可以使用Split(',');

您可以尝试使用拆分逗号

string s ="param1=true;param2=4;param3=2.0f;param4=sometext;";

string[] sArray = s.Split(',')

答案 2 :(得分:1)

这是一种更好的方法,可以避免使用大量空数组元素:

        string lsToString = "Your String Here";
        string[] laChars = { "," };
        string[] laTo = lsToString.Split(laChars, StringSplitOptions.RemoveEmptyEntries);

分割字符串后可以更轻松地使用它,因为您不必担心空元素。

皮特

答案 3 :(得分:0)

我需要做同样的事情,以便可以从蔚蓝的连接字符串中提取名称/值对。

实现与实现之间的唯一细微差别是重载,即在使用重载确保我们只能得到两个结果的情况下,在等号上拆分参数。

这意味着当参数值包含'='字符时,它们将被忽略。 即仍然可以在“ AccountKey = ABCDEFGHI ==;”之类的值上使用

希望这可以节省一些时间!

public class StorageConfiguration
{
    public string StorageAccountConnectionString { get; set; }

    public StorageConfiguration(string storageAccountConnectionString)
    {
        StorageAccountConnectionString = storageAccountConnectionString;
    }

    public string GetConnectionStringItem(ConnectionStringItem connectionStringItem)
    {
        if (string.IsNullOrWhiteSpace(StorageAccountConnectionString)) throw new ArgumentException("StorageAccountConnectionString is empty");

        var items = StorageAccountConnectionString.Split(";", StringSplitOptions.RemoveEmptyEntries).ToDictionary(x=> x.Split("=", 2)[0], y=> y.Split("=", 2)[1]);

        return items[connectionStringItem.ToString()];
    }


    public enum ConnectionStringItem
    {
        DefaultEndpointsProtocol,
        BlobEndpoint,
        AccountName,
        AccountKey
    }
}