일치 내에 포함을 사용하는 방법은 무엇입니까?listA에 일부 텍스트가 있습니다. listA의 값을 기반으로 다른 listB를 만들고 싶습니다. listA 텍스트에 사과가 포함되어 있으면 목록 B는 과일이어야 하고, 목록 A에 토마토가 있으면 listB는 야채여야 하며, listA에 데이지가 있으면 listB는 야채여야 합니다. 꽃이 되어야 합니다. 이들 중 일치하는 것이 없으면 listB는 알 수 없음이어야 합니다. 또한 검색에서는 대소문자를 구분해야 합니다.
JMP에서 Case 문과 동일한 것을 찾고 있습니다. match() 함수를 탐색 중이지만 포함 내부 일치를 사용하는 데 약간의 문제가 있습니다.
도움을 주시면 감사하겠습니다!
Re: 일치 내 포함을 사용하는 방법은 무엇입니까?이 스크립트를 사용해 보세요.이전과 같이 연관 배열을 사용하지만 이번에는 문자열 내의 문자열에 대한 포함 검색을 수행합니다.따라서 contain("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"};Re: 일치 내 포함을 사용하는 방법은 무엇입니까?- 다음은 listA라는 목록을 살펴보고 apple이라는 문자열을 찾으면 Fruit이라는 단어인 listB라는 목록에 배치하는 매우 기본적인 스크립트입니다.
names default to here(1);
listA = {"Pear", "applesauce", "ham"};
listB = {};
If( contains(uppercase(char(listA)), uppercase("apple")), insert into(listB, "Fruit"));나는 이것이 당신이 원하는 것이라고 생각하지 않습니다.
- "목록"이라고 하면 JMP 목록을 말하는 것인가요? 아니면 무엇을 말하는 것인가요?
- listB에 넣으라고 하면 JMP 목록인가요, 아니면 그냥 긴 문자열을 말하는 것인가요?
Re: 일치 내 포함을 사용하는 방법은 무엇입니까?문제를 잘 설명하지 못할 수도 있습니다. 내 listA에는 사과나 햄이 포함될 수 있는 큰 문자열이 포함되어 있습니다. listA의 문자열에 사과가 포함되어 있으면 listB에 "fruit"라는 문자열을 쓰고 싶습니다.
Re: 일치 내 포함을 사용하는 방법은 무엇입니까?식품 항목 목록에 "applesauce" 또는 "hamburger"와 같은 단어가 있을 수 있으므로 포함 문을 사용하고 싶습니다. 목록에 "applesauce"가 포함되어 있으면 과일에 태그를 지정하고 싶습니다.
감사해요
Re: 일치 내 포함을 사용하는 방법은 무엇입니까?연관 배열을 사용하여 이를 수행하는 방법은 다음과 같습니다.
// 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 );Re: 일치 내 포함을 사용하는 방법은 무엇입니까?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 ] 쌍이 있는 연관 배열을 사용할 수도 있습니다.