C#检查字符串是否存在,如果存在,则显示该字符串

C#检查字符串是否存在,如果存在,则显示该字符串,c#,string,foreach,C#,String,Foreach,如何从与字符串匹配的循环中获取单个值 我有一个符号列表,有时包含超过6个字符 使用当前代码,我将从列表中获取最后一个符号 所以我想做的是: 搜索超过6个字符的特定符号,例如EURUSD#1 如果存在,仅显示欧元兑美元#1 如果不存在,请加载欧元/美元 下面是代码和图像,您可以看到所有符号列表 string defaultSymbol = ""; // get all symbols from market watch foreach (string symbol in mt4.Symbols

如何从与字符串匹配的循环中获取单个值

我有一个符号列表,有时包含超过6个字符

使用当前代码,我将从列表中获取最后一个符号

所以我想做的是:

  • 搜索超过6个字符的特定符号,例如EURUSD#1
  • 如果存在,仅显示欧元兑美元#1
  • 如果不存在,请加载欧元/美元
下面是代码和图像,您可以看到所有符号列表

string defaultSymbol = "";
// get all symbols from market watch
foreach (string symbol in mt4.Symbols)
{
    Console.WriteLine(symbol);
    // if symbol length is greater that 6, there is a special symbol ex. EURUSD-X, EURUSD#, EURUSD-AX
    if (symbol.Length > 6)
    {
        // there is special symbol, ex. EURUSD#
        if (symbol.Contains("EURUSD"))
        {
            defaultSymbol = symbol.ToString(); // special symbol ex. EURUSD-X or EURUSD# or EURUSD-AX ...
        }
        else if (symbol.Contains("AUSCAD"))
        {
            // load another symbol ex. AUSCAD-X, AUSCAD#
            defaultSymbol = symbol.ToString(); // this need to load any other one that have more that 6 chars
        }
    }
    else
    {
        // thsere is no special symbol, load EURUSD by default
        // EURUSD exists
        if (symbol.Contains("EURUSD"))
        {
            defaultSymbol = "EURUSD";
        }
        else
        {
            // load another symbol ex. AUSCAD if EURUSD don't exists
            defaultSymbol = "AUSCAD";
        }
    }

}
Console.WriteLine("Symbol " + defaultSymbol);
测试字符串:

AUDNZD#
AUDUSD#
CADJPY#
CHFJPY#
EURAUD#
EURCAD#
EURCHF#
EURGBP#
EURJPY#
EURNZD#
EURUSD#
GBPAUD#
GBPCAD#
GBPJPY#
GBPNZD#
GBPUSD#
NZDJPY#
NZDUSD#
USDCAD#
USDCHF#
USDCNH#
USDJPY#
USDSGD#
USDTHB#
XAGUSD#
XAUUSD#

你的问题不太清楚。根据您发布的内容,您当前总是收到最后一个值,这是不期望的。若您只期望循环中的第一个匹配值,那个么一旦找到匹配,就必须使用
break语句。所以把4
break放进去在下面几行之后的循环中

defaultSymbol = symbol.ToString(); break; //2places
defaultSymbol = "EURUSD"; break;
defaultSymbol = "AUSCAD"; break;
但在这种情况下,您将只获得第一个匹配值,它取决于
m4.Symbols中的顺序


您的代码可能有更多的附加逻辑。如果您能告诉我们m4.Symbols的类型,并在m4.Symbols中发布一些示例值,并告诉我们示例预期输出,那么我可以帮助您了解更多详细信息

您能否编辑您的问题并将字符串复制/粘贴为文本,不是图像?@RuiJarimbaedited@Sanja您的代码在
if
else
条件下完全相同,这是故意的吗?@RuiJarimba我更新了代码检查一下please@RuiJarimba代码不是有意的,它需要这样工作,因为如果有一些let say特殊符号(包含6个以上字符)我需要加载那个,在另一种情况下,如果我没有使用我手动定义的默认值的特殊符号。您可以在第一条语句中看到
如果(symbol.Length>6)
我需要EURUDX,如果他不存在,我将加载AUSCAD-X如果它存在。m4.符号包含符号名称数组,它们可以包含6个字符(即普通字符),并且可以包含6个以上的字符(即带有后缀的符号),就像你在我的代码下看到的那样。我需要遍历所有文件,以找到一个包含我正在字符串中搜索的名称的文件,并在循环外部使用它。若它包含少于6个字符,那个么我将手动设置要使用的符号。我希望这更清楚。