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

时间:2018-07-14 11:53:44

标签: c# string foreach

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

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

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

所以我想做的是:

  • 搜索超过6个字符的特定符号。 EURUSD#1
  • 如果存在,则仅显示EURUSD#1
  • 如果不存在,请加载EURUSD

下面是代码和图片,因此您可以看到所有符号列表。

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#

1 个答案:

答案 0 :(得分:0)

您的问题不太清楚。根据您发布的内容,您当前总是总是收到最后一个值,这是不期望的。如果您只期望循环中的第一个匹配值,那么一旦它使用break;语句找到匹配项,就必须中断循环。因此,在以下几行之后将4 break;放入循环中。

defaultSymbol = symbol.ToString(); break; //2places
defaultSymbol = "EURUSD"; break;
defaultSymbol = "AUSCAD"; break;

但是在这种情况下,您只会获得第一个匹配值,并且取决于m4.Symbols

中的顺序

您的代码可能还有更多的逻辑。如果您可以告诉我们什么是m4.Symbols类型,然后在m4.Symbols中发布一些示例值并告诉我们示例预期输出,那么我可以为您提供更多详细信息