在db表中我有一个字符串,例如......
Var1=0;CosType=1;DefaultType=US_Pass;DateYear=1;DateRange=1;ReportFormat=0
我想创建一个VB.NET函数,它有1个输入var,字符串(上面)和"令牌"获得价值。 (返回值是令牌的值。)例如,如果我调用它(LongString是上面的字符串)....
txtValue.text = MyFunction(LongString,"DefaultType")
所以," US_Pass"将被退回。
编码MyFunction的最有效方法是什么?
我尝试过这样的事情......
return LongString.Substring(LongString.IndexOf(input_token) + 12)
我觉得我很近,但距离很远。
谢谢!
答案 0 :(得分:1)
将字符串拆分为分号。
Dim parts As String() = LongString.Split(";")
在ForEach
循环中循环部分。
StartsWith
令牌值的部分。IndexOf
)并将所有内容放在右侧(Substring
)。这应该足以让你弄清楚。
答案 1 :(得分:1)
在您的数据库中存储这样的数据可能不是一个好主意。希望您不需要从SQL查询这些属性。
在你的情况下,我将创建一个类来封装属性。您将字符串作为构造函数参数传入,并让类管理它。
这是C#中的一个例子,它不应该太难转换为VB:
.
答案 2 :(得分:1)
只要您知道字符串中存在密钥,就可以正常工作:
public string MyFunction(string longString, string key)
{
return
longString
.Split(';')
.Select(x => x.Split('='))
.ToDictionary(x => x[0], x => x[1])[key];
}
使用此代码:
string longString = "Var1=0;CosType=1;DefaultType=US_Pass;DateYear=1;DateRange=1;ReportFormat=0";
Console.WriteLine(MyFunction(longString, "DefaultType"));
我明白了:
US_Pass
作为VB.NET:
Public Function MyFunction(longString As String, key As String) As String
Return longString.Split(";"c).Select(Function(x) x.Split("="c)).ToDictionary(Function(x) x(0), Function(x) x(1))(key)
End Function