如何在匹配中使用包含?我在listA中有一些文本。我想根据listA中的值创建另一个listB。如果listA文本包含苹果,那么列表B应该是水果;如果列表A有番茄,listB应该是蔬菜;如果listA有雏菊,listB应该是花。如果这些都不匹配,则 listB 应该未知。此外,搜索需要不区分大小写。
在 JMP 中寻找与 case 语句等效的内容。我正在探索 match() 函数,但在使用 contains inside match 时遇到了一些问题。
任何帮助表示赞赏!
回复:如何在匹配中使用包含?试试这个脚本。像以前一样使用关联数组,但这次对字符串中的字符串进行包含搜索。所以 contains("applesauce", "apple") 会找到匹配项。
// Create an associative array for the different types of food
food_aa = associative array();
food_aa["Fruit"] = {"apple", "pear", "banana", "plum"};
food_aa["Meat"] = {"ham", "chicken", "beef", "fish"};
food_aa["Flower"] = {"daisy", "sunflower", "aster", "peony"};
// List of foods to match up
food_items = List( "applesauce", "banana split", "hambone", "chicken", "daisyflower", "corvette" );
kind_of_food = {};
keylist = food_aa << get keys();
For( i = 1, i <= N Items( food_items), i++,
one_food = food_items[i];
for (k = 1, k <= nitems(keylist), k++,
one_key = keylist[k];
food_type_list = food_aa[one_key];
found_match = 0;
for (m = 1, m <= nitems(food_type_list), m++,
one_type_food = food_type_list[m];
if (contains(one_food, one_type_food),
insert into (kind_of_food, one_key);
print("Found match: " || one_key);
found_match = 1;
break(); // found a match - no need to keep looking at other foods
);
);
if (found_match, break()); // found a match - no need to keep looking for a food type
);
if (!found_match,
print("No match found for " || one_food)
);
);
Show( kind_of_food );
以下是日志的结果:
"Found match: Fruit"
"Found match: Fruit"
"Found match: Meat"
"Found match: Meat"
"Found match: Flower"
"No match found for corvette"
kind_of_food = {"Fruit", "Fruit", "Meat", "Meat", "Flower"};回复:如何在匹配中使用包含?- 这是一个非常基本的脚本,它查找名为 listA 的列表,如果找到字符串 apple,则会将其放入名为 listB 的列表中,即单词 Fruit。
names default to here(1);
listA = {"Pear", "applesauce", "ham"};
listB = {};
If( contains(uppercase(char(listA)), uppercase("apple")), insert into(listB, "Fruit"));我不认为这就是你想要的。
- 当您说“列表”时,您是在谈论 JMP 列表还是什么?
- 当你说将它放入listB时,这是一个JMP列表,还是你只是在谈论一个长字符串。
回复:如何在匹配中使用包含?可能我没有很好地解释这个问题。我的listA包含一个大字符串,其中苹果或火腿可能是其中的一部分。如果listA中的字符串包含苹果,那么我想在listB中写入名为“fruit”的字符串。
回复:如何在匹配中使用包含?我想使用 contains 语句,因为食品列表可能包含“苹果酱”或“汉堡包”之类的单词。如果列表包含“苹果酱”,那么我想将其标记为水果。
谢谢
回复:如何在匹配中使用包含?这是使用关联数组来完成此操作的一种方法。
// Create an associative array for the different types of food
food_aa = associative array();
food_aa["Fruit"] = {"apple", "pear", "banana", "plum"};
food_aa["Meat"] = {"ham", "chicken", "beef", "fish"};
food_aa["Flower"] = {"daisy", "sunflower", "aster", "peony"};
// List of foods to match up
food_item = List( "apple", "banana", "ham", "chicken", "daisy" );
kind_of_food = {};
For( i = 1, i <= N Items( food_item), i++,
if (contains(food_aa["Fruit"], food_item[i]),
insert into (kind_of_food, "fruit");
,
contains(food_aa["Meat"], food_item[i]),
insert into (kind_of_food, "meat");
,
contains(food_aa["Flower"], food_item[i]),
insert into (kind_of_food, "flower");
);
);
Show( kind_of_food );回复:如何在匹配中使用包含?JSL 中没有 case 语句或函数。 您必须使用 If() 函数或 Match() 函数。 论点必须详尽无遗——包括所有已知的案例。 这是一个简短的例子:
Names Default to Here( 1 );
food item = List( "apple", "banana", "ham", "chicken" );
kind of food = List();
For( i = 1, i <= N Items( food item), i++,
Insert Into( kind of food,
Match( food item[i],
"apple", "fruit",
"banana", "fruit",
"ham", "meat",
"chicken", "meat",
"unknown"
);
);
);
Show( kind of food );
根据您的简短描述,我不明白 Contains() 函数如何应用。
您还可以使用带有 [ item => kind ] 对的关联数组进行查找。