如何在匹配中使用包含?我在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 ] 對的關聯數組進行查找。