C# 字符串列表包含所有子组件的名称
字符串列表G是:C# 字符串列表包含所有子组件的名称,c#,C#,字符串列表G是: [0] : {"1,2,5"} [1] : {"1,2,4,5,6"} [2] : {"2,4,6"} [3] : {"1,4,6"} 通过以下命令,我们得出结论,列表G[3]中存在“1,4”: if (G[i].Contains("1,4")) { //code here } 如何修改上述命令,即列表G[1]中存在的附加功能(包含),“1,4” 程序代码 for (int i = 0; i < candid.Count; i++) {
[0] : {"1,2,5"}
[1] : {"1,2,4,5,6"}
[2] : {"2,4,6"}
[3] : {"1,4,6"}
通过以下命令,我们得出结论,列表G[3]中存在“1,4”
:
if (G[i].Contains("1,4")) { //code here }
如何修改上述命令,即列表G[1]中存在的附加功能(包含),“1,4”
程序代码
for (int i = 0; i < candid.Count; i++)
{
foreach (TransactionTP b in transactions)
{
string search = candid[i];
var searchNumbers = search.Split(',').Select(int.Parse).ToList();
for (int j = 0; j < G.Count; j++)
{
IEnumerable<int> numbers = G[j].Split(',').Select(int.Parse);
int idx = 0;
foreach (var number in numbers)
{
if (number == searchNumbers[idx])
{
idx++;
}
if (idx == searchNumbers.Count)
{
arraye[i] = arraye[i] + (b.transactionUtility);
break;
}
}
}
}
}
for(int i=0;i
更新:
搜索词的顺序很重要。为了保持匹配集的顺序,您需要计算每个字符串,并跟踪您在匹配中的位置
string[] G = new[]
{
"1,2,5",
"1,2,4,5,6",
"2,4,6",
"1,4,6"
};
string search = "1,4";
var searchNumbers = search.Split(',').Select(int.Parse).ToList();
for (int i = 0; i < G.Length; i++)
{
// Convert the string into an enumeration of numbers
IEnumerable<int> numbers = G[i].Split(',').Select(int.Parse);
// Index to keep track of the search
int idx = 0;
// Loop through the input set sequentially
foreach (var number in numbers)
{
// Check if the input matches the next expected number
if (number == searchNumbers[idx])
{
idx++;
}
if (idx == searchNumbers.Count)
{
Console.WriteLine("String {0} matched", G[i]);
break;
}
}
}
string[]G=new[]
{
"1,2,5",
"1,2,4,5,6",
"2,4,6",
"1,4,6"
};
字符串搜索=“1,4”;
var searchNumbers=search.Split(',).Select(int.Parse.ToList();
对于(int i=0;i
将单个Contains调用替换为执行以下操作的方法:
bool passes = false;
for(int i = 0; i < G.Length; i++)
{
List<string> temp = new List<string>();
if(G[i].Contains(","))
{
temp = G[i].Split(",");
}
else
{
temp = G[i];
}
if(temp.Contains("1") && temp.Contains("4")
{
passes = true;
}
}
return passes;
bool passs=false;
对于(int i=0;i
这消除了匹配“10”或“41”等的可能性
它也不会在意你的元素是否被排序,即使你说它们被排序了。它也会匹配,不管列表中“1”和“4”之间的条目数是多少
您可以对其进行调整,以便在符合条件之前获取您想要匹配的任意数量的输入,如果您想这样做,我将把它留给您。@Amin排序是否重要?例如,字符串{“4,5,1”}匹配?OP希望覆盖contains函数,以便如果字符串中的任何位置都有1和4,则答案应该为TRUE,而不是字符串“1,4”,而是更像([^0-9]|^)[1.4]([^0-9]|$)是
G[n]
只是一个字符串?请阅读:@Ryan S,是的,很重要,数组始终处于有序状态。如果您有时间,也必须阅读=>@Ryan S,我更新了问题。但仍然收到错误。错误是:“System.FormatException:'输入字符串的格式不正确。”,foreach(数值中的变量)
@CodeNotFound,你能帮我一下吗???@Amin代码是正确的。检查这个演示=>你能给我们看看你的G数组的内容吗?@CodeNotFound,G如上所述,string search
是{“1,2”,“1,4”,“2,4”,“2,5”,…}您不需要使用if\else
进行拆分,您只需拆分,如果,
不存在,您将得到一个包含一项的数组。1和4是一个示例。我想提供一个在字符串列表中搜索字符串数组的结构