如何在C#循环的else块中查找竖线"|"后的字符并判断
C#循环中提取竖线"|"后字符并判断的实现
针对你给出的代码场景,在else代码块里可以通过以下两种方式提取竖线后的字符并进行判断:
方法1:使用Split分割字符串
直接用竖线作为分隔符拆分字符串,取拆分后的第二个元素即可。建议先判断字符串是否包含竖线,避免出现索引越界的问题:
foreach (var testing in TestQuestion.Split(',')) { if (testing.Equals("Table|Y")) { order.OrderProperties.Add(new OrderProperty("A") { // 原有逻辑代码 }); } else { // 先检查当前字符串是否包含竖线 if (testing.Contains('|')) { string afterPipe = testing.Split('|')[1]; // 根据竖线后的字符执行对应逻辑 switch (afterPipe) { case "T1": // 处理Test|T1的业务逻辑 break; case "T2": // 处理Test|T2的业务逻辑 break; case "T3": // 处理Test|T3的业务逻辑 break; default: // 处理其他未匹配到的情况 break; } } else { // 处理字符串不包含竖线的异常场景 } } }
方法2:使用IndexOf+Substring截取字符
如果担心Split会创建额外数组,也可以通过索引定位的方式直接截取竖线后的内容:
foreach (var testing in TestQuestion.Split(',')) { if (testing.Equals("Table|Y")) { order.OrderProperties.Add(new OrderProperty("A") { // 原有逻辑代码 }); } else { int pipeIndex = testing.IndexOf('|'); // 确保竖线存在且不在字符串末尾 if (pipeIndex != -1 && pipeIndex < testing.Length - 1) { string afterPipe = testing.Substring(pipeIndex + 1); // 用if-else或switch做判断逻辑 if (afterPipe == "T1") { // Test|T1的处理逻辑 } else if (afterPipe == "T2") { // Test|T2的处理逻辑 } // 其他判断分支... } else { // 处理无竖线或竖线位置异常的情况 } } }
两种方法都能满足需求:第一种代码更简洁易读,第二种在性能上略有优势(差异极小,常规场景下可忽略),你可以根据实际业务场景选择使用。
内容的提问来源于stack exchange,提问作者test test
相关产品推荐
相关产品推荐

