我有一个类似下面列表的数组。
我需要通过查找它出现的哪一行来找到颜色的id,并且该行的第一项是颜色的id。
我尝试了以下代码,但它无法正常工作,因为我相信它是在整行中搜索整个单词。如何更改代码以使lineoffset onlt应用于每行的第二项?
set the wholeMatches to true
put lineOffset("red",colors) into theLine
1蓝色
2粉红色
3红橙色
4 orange
5绿色
6红色
7 black
8黄色
答案 0 :(得分:1)
使用其他信息进行编辑:
获得这条线真的很重要吗?你可以尝试:
put returnNum("Diarrhea",gArrSymptoms)
function returnNum tItem, list
repeat for each line L in list
put L into tempL
delete word 1 of tempL
set the wholeMatches to true
if lineOffset(tItem, tempL) >0 then return word 1 of L
end repeat
end returnNum
此外,颜色是LiveCode中的保留字,所以我在这里使用了tColors。
答案 1 :(得分:1)
您也可以使用过滤器命令。
filter lines of gArrSymptoms with "*" & tab & theSymptom & "*" into temp
put word 1 of temp into theIndex
“theSympton”是您正在查找的症状,“theIndex”是您想要的数字。
*是一个通配符,用于捕获行的开头和结尾。
需要“标签”以确保在主要组件之前未选择辅助组件。 例如“腹泻”包括两次作为次要术语以及一次作为主要术语。
这让我想知道如何确保首先选择正确的术语。
如果您的数组位于列表字段中,那么该字段的以下脚本也会为您提供所需的索引..
on mouseup
put word 1 of the hilitedline of me
end mouseup
答案 2 :(得分:0)
LineOffset搜索多行,但在您的示例中,您只有一行。通常,您可以在一行中使用wordOffset,但是您有一个额外的挑战,因为您的一个颜色名称使用多个单词。因此,您可以将所有单词视为项目,并使用itemOffset函数:
put "1 blue 2 pink 3 reddish orange 4 orange 5 green 6 red 7 black 8 yellow" into theList
set the itemDel to space
set the wholeMatches to true
put itemOffset("reddish orange",theList) - 1 into N
put item N of theList into theColorID
答案 3 :(得分:0)
假设您有一个包含以下数据的字段:
2 Abdominal cramps
11 Abdominal pain
7 Bloody Diarrhea
16 Confusion
8 Cramps
5 Diarrhea
9 Facial pallor
6 Fever
13 Headache
12 Jaundice
3 Nausea
14 Stiff neck
10 Tea-colored urine
4 Vomiting
1 Watery diarrhea
15 Weakness
在每条记录中使用行分隔记录和制表符分隔的项目。您可以使用以下语法检索列表中任何症状的ID号:
put word 1 of line (lineoffset(tab & "Headache"& cr,fld 1 & cr)) of fld 1