我只需要阅读完整字符串的特定部分。该字符串将采用以下形式:
“ 1一些货币名称= 0.4232其他货币名称”
因此,我能想到的最快的方法是在等号(=)运算符处拆分字符串,从而向数组添加两个值,如下所示:
string rawInput = "1 Some Currency Name = 0.4232 Other Currency Name";
string[] rawSplit = rawInput.Split('=');
string firstRate = rawSplit[0].ToString();
string secondRate = rawSplit[1].ToString();
现在,我只需要获取secondRate字符串的第一部分(“ 0.4232”)。因此,我将再次拆分该字符串(错误的编码):
string[] lastSplit = secondRate.Split(); //Split at whitespace characters
string firstValue = lastSplit[0].ToString(); //Should return "0.4232" but instead returns ""
当我运行应用程序以测试此功能时,它将返回一个空字符串,而不是值“ 0.4232”。为什么会这样呢?我在这里想念什么?
完整方法:
private void btnTest_Click(object sender, EventArgs e)
{
string rawInput = "1 Some Currency Name = 0.4232 Other Currency Name";
string[] rawSplit = rawInput.Split('=');
string baseRate = rawSplit[0].ToString(); //1 Some Currency Name
string conversionRate = rawSplit[1].ToString(); //0.4232 Other Currency Name
rawSplit = GetSplit(conversionRate);
XtraMessageBox.Show(rawSplit[0].ToString()); //Returns blank string here???
}
private string[] GetSplit(string inputString)
{
return inputString.Split();
}
欢迎任何想法或建议,我们将不胜感激!
最佳答案
问题是,当您在'='
处分割原始字符串时,您得到的结果在结果的开头有一个额外的空格,基本上rawSplit[1]
等于" 0.4232 Other Currency Name"
。
您可以使用String.Split重载,该重载允许您指定删除空条目,这将修剪结果中的所有空白条目。
string[] lastSplit = secondRate.Split(new[] {' '}, StringSplitOptions.RemoveEmptyEntries);
附带说明,当输入已经是字符串时,无需使用
ToString()
:string[] rawSplit = rawInput.Split('=');
// rawSplit is a string array, so rawSplit[0] is already a string...
string firstRate = rawSplit[0]; // .ToString();