Чтобы найти индекс строки и индекс слова, читая текстовый файл - PullRequest
0 голосов
/ 11 февраля 2019

Я только начал изучать Tcl, может кто-нибудь помочь мне найти индекс строки и индекс слова для конкретного слова, прочитав текстовый файл с использованием Tcl.

Спасибо

1 Ответ

0 голосов
/ 13 февраля 2019

Как уже упоминалось в комментариях, есть много основных команд, которые вы можете использовать для решения вашей проблемы.Чтобы прочитать файл в список строк, вы можете использовать команды open, split, read и close следующим образом:

set file_name "x.txt"
# Open a file in a read mode
set handle [open $file_name r]
# Create a list of lines
set lines [split [read $handle] "\n"]
close $handle

Нахождение определенного слова в списке строк можетдостигается с помощью цикла for, incr и набора команд, связанных со списками, таких как llength, lindex и lsearch.Каждая строка в Tcl может интерпретироваться и обрабатываться как список.Реализация может выглядеть следующим образом:

# Searching for a word "word"
set neddle "word"
set w -1
# For each line (you can use `foreach` command here)
for {set l 0} {$l < [llength $lines]} {incr l} {
  # Treat a line as a list and search for a word
  if {[set w [lsearch [lindex $lines $l] $neddle]] != -1} {
    # Exit the loop if you found the word
    break
  }
}

if {$w != -1} {
  puts "Word '$neddle' found. Line index is $l. Word index is $w."
} else {
  puts "Word '$neddle' not found."
}

Здесь скрипт перебирает строки и ищет каждое слово для данного слова, как если бы оно было списком.При выполнении команды list для строки она по умолчанию разделяется на пробелы.Цикл останавливается, когда в строке найдено слово (когда lsearch возвращает неотрицательный индекс).

Также обратите внимание, что команды списка обрабатывают несколько пробелов как один разделитель.В этом случае это, кажется, желаемое поведение.Использование команды split в строке с двойным пробелом фактически создаст «слово нулевой длины», которое может привести к неверному индексу слова.

...