从字符串中提取参数的任何自定义函数? [英] Any custom function to extract parameters from strings?

查看:99
本文介绍了从字符串中提取参数的任何自定义函数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我曾经遇到VB6中的一个函数,该函数接收了3个参数Parameter,Match和Delimiter,它们可以从给定的字符串中提取信息,如下所示:

SiteAddress = XXXX; UID = XXXX; PWD = XXXX



例如,SiteAddress是一个参数,;是分隔符,=是匹配。我想知道是否有人可以帮助我用C#编写一个。

解决方案

为什么自定义函数?尝试

 使用 StringDictionary = System.Collections.Specialized.StringDictionary; 

// ...

< span class =code-keyword> static StringDictionary ParseKeyValues( string source, char parameterDelimiter , char keyValueDelimiter){
StringDictionary result = new StringDictionary();
string [] parameters =
source.Split(
new char [] {parameterDelimiter},
System.StringSplitOptions.RemoveEmptyEntries);
foreach 字符串参数 in 参数){
string [] pair = parameter.Split( new char [] {keyValueDelimiter});
string key = pair [ 0 ];由于之前的拆分选项, // 始终存在
string value = null ;
if (pair.Length > 1
value = pair [ 1 ];
result.Add(key, value ); // 可能会抛出异常
} // loop
return 结果;
} // ParseKeyValues





正则表达式解决方案存在,但会更加丑陋,因为参数数量未知。



-SA

I once came across a function in VB6 that received 3 parameters "Parameter","Match" and "Delimiter" that could extract information from a given string as follows:
SiteAddress=XXXX;UID=XXXX;PWD=XXXX

In which SiteAddress, for example, is a parameter, ";" is the delimiter and "=" is the match. I wonder if anyone can help me have one written in C#.

解决方案

Why "custom functions"? Try something like

using StringDictionary = System.Collections.Specialized.StringDictionary;

// ...

static StringDictionary ParseKeyValues(string source, char parameterDelimiter, char keyValueDelimiter) {
    StringDictionary result = new StringDictionary();
    string[] parameters =
        source.Split(
            new char[] { parameterDelimiter },
            System.StringSplitOptions.RemoveEmptyEntries);
    foreach (string parameter in parameters) {
        string[] pair = parameter.Split(new char[] { keyValueDelimiter });
        string key = pair[0]; // always exist due to previous split options
        string value = null;
        if (pair.Length > 1)
            value = pair[1];
        result.Add(key, value); // may throw exception
    } //loop
    return result;
} //ParseKeyValues



A Regular Expression solution exist but will be uglier, as the number of parameters is unknown.

—SA


这篇关于从字符串中提取参数的任何自定义函数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆