2015-10-11 2 views
0

Я пытаюсь использовать следующий кодКак найти строку смещения, содержащую определенное количество

put 7 into lFoodID 

lineoffset (lFoodID,gArrFood) into tArrFoodLine 

найти строку, содержащую число 7 в массиве ниже

17 Banana 
20 Beans 
2 Beef 
1 Bread 
8 Cabagge 
6 Chicken 
5 Eggs 
15 Ice Cream 
3 Mango 
7 Pork 
18 Rice 
4 Salad 
19 fried fish 

Это возвращение 1. Я знаю, что это потому, что 17 содержит номер 7. Я пробовал

set the wholeMatches to true 

но это не работает ни , Я считаю, что регулярное выражение (^ (7) должно работать, но я могу выяснить, как использовать регулярное выражение в lineoffset.

ответ

0

Я не уверен, что вы действительно после, и мне интересно, действительно ли ваши данные выглядят так, как вы Я полагаю, что ваши данные отображаются так, как показано на рисунке, но это может привести к решению, которое немного отличается от того, что вы действительно хотите.

Если вы хотите получить продукт, связанный с индексом, вы можете использовать следующий скрипт

put fld 1 into myList 
replace space&space with tab in myList 
repeat until (tab&tab is not in myList and space&space is not in myList) 
    replace space&space with space in myList 
    replace tab&tab with tab in myList 
end repeat 
split myList by cr and tab 
put myList[7] into myProduct 
put myProduct 

MyProduct содержит название продукта. Обратите внимание, что вам не нужно будет цикл повторения, если данные отформатирован. Если у ou действительно хотите иметь индекс, используйте это:

put fld 1 into myList 
put 7 into myIndex 
if word 1 of myList is not myIndex then 
    put number of lines of char 1 to offset(cr & "7" & space ,myList) of myList into myLine 
else 
    put 1 into myLine 
end if 
put myLine 

MyLine содержит полную запись в вашем списке.

+0

Thanks Mark. Список фактически получен из запроса с использованием 'put revDataFromQuery (tab, return, gDatabaseID,« select * from tblFood order by fldfood ») в gArrFood' и не отображается. Он используется для поиска другого отображаемого списка. Поэтому мне нужна была последняя часть вашего кода 'put 7 в lFoodID split garrfood by cr и tab ответить garrfood [lFoodID]', который сделал именно то, что я хотел. – Sheils

+0

Просто вопрос аддона. Как вы находите индекс, если знаете продукт. Например, как я могу найти, какой индекс держит продукт «свинина» в массиве после раскола. – Sheils

+0

Вам лучше сделать это, прежде чем разделить переменную на массив и использовать тот же принцип: 'поместите количество строк (char 1 для смещения (tab &" свинина "и cr, myList)) в myLine'. Если это не то, что вы хотите, возможно, вам лучше задать новый вопрос. – Mark