Я создал этот прикрепленный файл, загруженный здесь: https://files.fm/u/uqm4marg
Этот файл был создан с использованием PHP. \ t был использован для вставки табуляции. Работает поиск всего файла, но для пространства табуляции между INR0564 D и INR0564 C. Это пространство табуляции имеет только один пробел, в то время как другие пространства табуляции имеют 4, как между 667722553331 и INR0564.
Таким образом, вопрос заключается в том, что \ t использовалось для предоставления табуляции между символами, почему в разных местах разное расстояние.
Изображение ниже взято на возвышенный текст, который показывает различные пространства табуляции, упомянутые выше.
Ваш редактор настроен на перемещение курсора до следующей остановки табуляции. При ширине вкладки, настроенной на 4 символа, позиции табуляции находятся со смещением строки 0, 4, 8, a.s.o. Должно быть понятно, что горизонтальный язычок по смещению 11 будет перемещаться к смещению 12, а не к 15 (11 + 4). Это просто не фиксированная ширина, но должна рассматриваться в отношении фиксированных остановок.
Tabs Spaces не имеет ничего общего, если вы дали правильный \ t в коде, он сгенерирован правильно. Вкладка поведения отличается в зависимости от типа редактора.
Например, если вы используете приведенный ниже код для генерации
$myfile = fopen(getcwd()."/newfile.txt", "w") or die("Unable to open
file!");
$txt = "BATBALL88026613\n
667722553331\tINR0564D\tSeptember\t2.00Salary\n
051122334432\tINR0564C\tSeptember\t1.00Salary\n
056401112233\tINR0564C\tSeptember\t1.00Salary";
fwrite($myfile, $txt);
fclose($myfile);
А ты попробуй открыть в NOTEPAD и NOTEPAD ++ будет по другому. Этого несоответствия не будет в NOTEPAD ++.
tab
персонаж не вставляет пробелы. Это один символ, который интерпретируется редактором.
назначение символа табуляции должен помочь в записи данных в табличном формате, т.е. в табличном формате. Поскольку строки уже представлены строками текста, tab
персонаж помогает создавать столбцы.
Редакция истолковывает tab
символ как перемещение курсора вправо, а не на одну позицию (как это происходит с space
символ), но пока не достигнет следующей остановки табулятора.
В компьютерном программном обеспечении табуляторы обычно устанавливаются в каждом 8 или 4 столбцах. Это означает, что либо столбцы 1
, 9
, 17
a.s.o. или же 1
, 5
, 9
, 13
и т.д. На вашей картинке (и из описания в вашем вопросе) кажется, что «размер» вашей вкладки, которую вы используете, 4
столбцы (это наиболее часто используемое значение в настоящее время).
Поскольку tab
символ отправляет курсор в фиксированную позицию, его воспринимаемый «размер» не является фиксированным, он зависит от столбца курсора до tab
персонаж.
На вашем изображении первый столбец данных имеет 12 символов (он отображается в столбцах 1-12
в редакторе). Затем tab
символ отправляет курсор на следующий табулятор, который находится в столбце 17
, Следующее значение (INR0564
, 7
символы) отображается в столбцах 17-23
, Следующий tab
символ «короче», он охватывает только 1
колонка; он отправляет курсор в столбец 25
где отображается D
, Следующий заставляет курсор перейти к столбцу 29
(3
столбцы), где ничего не отображается. Тогда есть еще один tab
это охватывает 4
символы до следующего табулятора (в столбце 33
) где 2.0SEp Salary
значение начинается.
Столбцы, табуляторы anb и ваши данные изображены ниже:
1 5 9 13 17 21 21 25 29 33 ...
v v v v v v v v v v ...
056665554531 INR0564 D 2.0Sep Salary
. | .|. | |
+-->| >|+->+-->|
На приведенном выше рисунке точка (.
) отмечает положение курсора после каждого столбца данных и канала (|
) отмечает свою позицию после tab
персонаж был отображен. «Стрелки» в последней строке показывают, как курсор перепрыгивал через несколько столбцов из-за tab
символов, чтобы добраться до следующего табулятора.