帮助 contains within if else你好,
我编写了以下代码来检查列表是否包含字符并相应地执行一些步骤。
出于某种原因,脚本不检查“if contains”条件并始终执行 else 部分。我认为我在这里犯了一个愚蠢的错误。
Clear Symbols();
Delete Symbols();
clear globals();
dtNext = Open("C:\temp\output.csv","invisible");
Summarize(dtNext, testlist = By(:test));
show(testlist );
SAVEPATH = "C:\temp\";
If(contains(testlist ,"M"),
Macrodt=New Table("test_type",
New Column("test_type",
Character,
Nominal,
Set Values( {"Morning"})
),
invisible
);
, //else
Macrodt=New Table("test_type",
New Column("test_type",
Character,
Nominal,
Set Values( {"Evening"})
),
invisible
);
);
//Save macro file
Macrodt<<SAVE></SAVE>
Re: 帮助 contains within if else我使用了 cocncatitems 函数并且它起作用了。
谢谢
Re: 帮助 contains within if else作为@Jeff_Perkinson建议,更多信息会有所帮助,但我会尝试一下我认为可能会让您感到困惑的原因。 “包含”函数可用于列表或字符串...如果您要查找任何列表项是否包含特定字符,您的“If”语句将不会产生所写的所需结果。 如果这是您的意图,您可以在“If”语句中用 Concat Items 函数包围您的“testlist”变量,即 Concat Items(testlist) 计算为由所有列表项拼接在一起组成的单个字符串。 现在,如果新字符串中存在特定字符,Contains 函数将返回肯定响应。
希望这可以帮助。
Re: 帮助 contains within if else您的代码中没有明显的错误。 我们需要更多的细节来帮助找出混淆的地方。
这是一个示例,表明您的原型是正确的。
dts = {"$SAMPLE_DATA\Fitness.jmp", "$SAMPLE_DATA\Big Class.jmp"};
For( i = 1, i <= N Items( dts ), i++,
dtNext = Open( dts[i] );
Summarize( dtNext, testlist = By( :age ) );
Show( testlist );
If( Contains( testlist, "42" ),
Show( "testlist contains 42" );
, //else
Show( "testlist doesn't contain 42" )
);
);
日志:
/*:
testlist = {"38", "40", "42", "43", "44", "45", "47", "48", "49", "50", "51", "52", "54", "57"};
"testlist contains 42";
testlist = {"12", "13", "14", "15", "16", "17"};
"testlist doesn't contain 42";