如何在 foreach 循环中填充 KeyValuePair<int, int>
How to populate KeyValuePair<int, int> inside a foreach loop
我有如下代码片段,它遍历拆分字符串。
if (!string.IsNullOrEmpty(profile.ContactNumber))
{
var splitContract = profile.ContactNumber.Split(new string[] { "and", "&" }, StringSplitOptions.RemoveEmptyEntries);
foreach (var contract in splitContract)
{
//check the split if it contains "x" or "X" character - if it does contain, it means it's a valid contract
if (contract.Contains("x") || contract.Contains("X"))
{
var condensedString = contract.Replace(" ", "");
var split = condensedString.Split(new char[] { 'x', 'X' });
GetNumbersOnly(split);
}
}
}
private void GetNumbersOnly(string[] inputArray)
{
var ListKeyValuePair = new List<KeyValuePair<string, string>>();
foreach (var item in inputArray)
{
var numberToAdd = Regex.Replace(item, "[^0-9]", "", RegexOptions.None);
ListKeyValuePair.Add(?, ?);
}
}
在 GetNumbersOnly 方法中,如何在 for each 循环中填充 KeyValuePair 列表?
inputArray 变量的数组元素为 [0] = 100,第一次迭代为 [1] = 5,依此类推。
这是 KeyValuePair {100, 5}、{200, 10}、{500, 15} 所需的输出。
抱歉,我google了一下好像没有找到相关的场景。非常感谢任何帮助。
ListKeyValuePair.Add( ) 函数需要 1 个 KeyValuePair 类型的字段。您需要使用 new KeyValuePair() { key = item, value = numberToAdd } 制作其中之一;
为什么要将键值对保存在列表中?为什么不是字典?你想要重复的对吗?
因为键和值存储在单独的数组项中,所以您的逻辑取决于 order。在这种情况下,您应该避免使用 for...each
,而是使用普通的 for
,这样您就可以控制迭代的方式。
private void GetNumbersOnly(string[] inputArray)
{
var ListKeyValuePair = new List<KeyValuePair<string, string>>();
for (int i=0; i< inputArray.Length; i+=2) //The "2" here is very important!
{
var numberToAdd1 = Regex.Replace(inputArray[i], "[^0-9]", "", RegexOptions.None);
var numberToAdd2 = Regex.Replace(inputArray[i+1], "[^0-9]", "", RegexOptions.None);
ListKeyValuePair.Add(new KeyValuePair<string, string>(numberToAdd1, numberToAdd2));
}
}
我有如下代码片段,它遍历拆分字符串。
if (!string.IsNullOrEmpty(profile.ContactNumber))
{
var splitContract = profile.ContactNumber.Split(new string[] { "and", "&" }, StringSplitOptions.RemoveEmptyEntries);
foreach (var contract in splitContract)
{
//check the split if it contains "x" or "X" character - if it does contain, it means it's a valid contract
if (contract.Contains("x") || contract.Contains("X"))
{
var condensedString = contract.Replace(" ", "");
var split = condensedString.Split(new char[] { 'x', 'X' });
GetNumbersOnly(split);
}
}
}
private void GetNumbersOnly(string[] inputArray)
{
var ListKeyValuePair = new List<KeyValuePair<string, string>>();
foreach (var item in inputArray)
{
var numberToAdd = Regex.Replace(item, "[^0-9]", "", RegexOptions.None);
ListKeyValuePair.Add(?, ?);
}
}
在 GetNumbersOnly 方法中,如何在 for each 循环中填充 KeyValuePair 列表?
inputArray 变量的数组元素为 [0] = 100,第一次迭代为 [1] = 5,依此类推。
这是 KeyValuePair {100, 5}、{200, 10}、{500, 15} 所需的输出。
抱歉,我google了一下好像没有找到相关的场景。非常感谢任何帮助。
ListKeyValuePair.Add( ) 函数需要 1 个 KeyValuePair 类型的字段。您需要使用 new KeyValuePair() { key = item, value = numberToAdd } 制作其中之一;
为什么要将键值对保存在列表中?为什么不是字典?你想要重复的对吗?
因为键和值存储在单独的数组项中,所以您的逻辑取决于 order。在这种情况下,您应该避免使用 for...each
,而是使用普通的 for
,这样您就可以控制迭代的方式。
private void GetNumbersOnly(string[] inputArray)
{
var ListKeyValuePair = new List<KeyValuePair<string, string>>();
for (int i=0; i< inputArray.Length; i+=2) //The "2" here is very important!
{
var numberToAdd1 = Regex.Replace(inputArray[i], "[^0-9]", "", RegexOptions.None);
var numberToAdd2 = Regex.Replace(inputArray[i+1], "[^0-9]", "", RegexOptions.None);
ListKeyValuePair.Add(new KeyValuePair<string, string>(numberToAdd1, numberToAdd2));
}
}