String.prototype.split()

Обработка строк в PowerShell

Кроме перенаправления вывода в файл и командлета Out-File, также предназначенного для сохранения вывода в файл, в PowerShell имеются два командлета для обработки строк. Это командлеты Set-Content и Add-Content.

Set-Content обрабатывает строки и перезаписывает содержимое файла, если он уже имеется.

Add-Content обрабатывает строки и дописывает их к файлу, если он уже имеется. Если файла нет, то обе программы действуют одинаково и создают его.

Чтобы понять разницу между Out-File и Set-Content (Add-Content) посмотрите на пример работы этих программ:

Get-ChildItem | Out-File test1.txt
Get-Content test1.txt
Get-ChildItem | Set-Content test2.txt
Get-Content test2.txt

То есть в первом случае вывод никак не обрабатывается, а во втором случае написаны абсолютные пути до файлов и убрана другая информация.

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

Get-ComputerInfo | Set-Content test3.txt

Причина потери данных в том, что вместо строк Set-Content получает объект Microsoft.PowerShell.Commands.ComputerInfo.

Создание текстовых элементов

Виджет Entry представляет собой текстовый элемент на одной строке. Вместе с классами и он является одним из самых используемых в Tkinter.

Как создать текстовый элемент

Следующий пример демонстрирует, как создать форму логина с двумя экземплярами для полей и . Каждый символ отображается в качестве звездочки. Кнопка выводит значения в консоли, а — удаляет содержимое обоих полей, возвращая фокус в :

Копировать

Как работают экземпляры

Экземпляры виджетов Entry создаются в родительском окне или фрейме, будучи переданными в качестве первого аргумента. С помощью опциональных ключевых слов можно задать дополнительные свойства. У в этом примере таких нет, а у — аргумент со строкой «*», который будет выводить каждый символ как звездочку.

С помощью метода текущий текст можно будет получить в виде строки. Это используется в методе , который выводит содержимое в стандартном выводе ().

Метод принимает два аргумента, которые представляют собой диапазон символов для удаления

Важно только помнить, что индексы начинаются с 0 и не включают последний символ. Если передать только один аргумент, то удалится символ на этой позиции

В методе удаляется содержимое от индекса 0 до константы , в результате чего весь контент очищается. После этого фокус возвращается в поле .

Содержимое виджета Entry можно модифицировать с помощью метода , который принимает два аргумента:

  • — позиция, куда нужно вставить текст (индекс первого — 0)
  • — строка, которая будет вставлена

Стандартный шаблон сброса содержимого на значение по умолчанию — комбинация методов и :

Еще один паттерн — добавление текста туда, где находится курсор. Для этого используется константа :

Как и класс также принимает параметры и для изменения стиля контура и состояния. Также стоит отметить, что вызовы и игнорируются, когда состояние равно «disabled» или «readonly».

Профили

У каждого пользователя Powershell есть свой профиль. Профиль выглядит как обычный файл со скриптом формата ps1. Открывая консоль Powershell вы автоматически запускаете этот файл и все значения, перечисленные в файле профиля, становятся видимыми для вас. Кроме этого профиль не ограничивается одним пользователем и может использоваться для всех.

Создание

Каждый профиль пользователя хранится в файле «.ps1» и путь до него можно посмотреть используя встроенную переменную:

Вы можете открыть этот файл и вписать в него любую команду. Я использую команду, которая проверит соединение с DNS сервером Google:

Теперь, каждый запуск консоли будет выводить следующее, дополнительное, сообщение:

Отмечу, что это не самый удачный пример т.к. эта команда занимает существенное время на выполнение. Вы вряд ли захотите ждать 4-5 секунд для запуска консоли.

Вам может не будет требоваться отображать подобный результат при каждом запуске. Вы можете поместить эти данные в переменную и затем вызывать ее по мере работы в консоли:

Самый быстрый вариант, при котором вам не нужно будет дожидаться загрузки, это создание функции совмещающей все ваши базовые задачи. Она будет вызываться только при обращении к ней:

Типы профилей

Если посмотреть содержание переменной $Profile более детально, то мы увидим 4 типа профилей:

В выведенной информации можно увидеть понятие ‘host’. Под «хостом» подразумевается программа, которая хостит Powershell. Это может быть стандартная консоль, редактор ISE, VisualStudio и т.д. 

Мы так же увидим следующие профили:

  • AllUsersAllHosts — профиль для всех пользователей и для всех хостов;
  • AllUsersCurrentHost — профиль для всех пользователей и только для текущего хоста;
  • CurrentUserAllHosts — профиль для текущего пользователя и для всех хостов;
  • CurrentUserCurrentHost — профиль для текущего пользователя и только для этого хоста.

Указанный путь — это место, где уже есть или может быть создан файл. При каждом запуске Powershell проверяет эти пути и читает данные.

Наиболее просто будет понять разницу работы профилей на примере. В каждый файл профиля я поместил команду соответствующую его названию:

Запуск средства разработки Powershell ISE и обычной консоли был следующий:

Как видно, в ISE, отображаются не все профили. Связано это с тем, что консоль Powershell и редактор ISE — это разные хосты. Мы можем увидеть немного отличающиеся профили если запустить эту команду в ISE:

Так же вы можете увидеть дополнительные профили если используете Powershell Core 6/7, VisualStudio и т.д..

Профиль при удаленном подключении

Прямых способов использования профилей при удаленном подключении нет. Есть косвенный способ, который заключается в возможности использования файлов со скриптами в команде «Invoke-Command». Следующий пример демонстрирует такую возможность:

На самом деле эта команда выглядит следующим образом:

Вам так же будет интересно:

Разделение строки при помощи последовательно идущих разделителей

Если вы для разделения строки используете метод и не указываете разделитель, то разделителем считается пробел. При этом последовательно идущие пробелы трактуются как один разделитель.

Но если вы указываете определенный разделитель, ситуация меняется. При работе метода будет считаться, что последовательно идущие разделители разделяют пустые строки. Например, .

Если вам нужно, чтобы последовательно
идущие разделители все-таки трактовались
как один разделитель, нужно воспользоваться
регулярными выражениями. Разницу можно
видеть в примере:

import re

print('Hello1111World'.split('1'))
print(re.split('1+', 'Hello1111World' ))

Результат:

Отправка email

Статья Michaël Van Canneyt об отправке электронной почты, включая вложения, с помощью Synapse: http://www.freepascal.org/~michael/articles/lazmail/lazmail-en.pdf

Из сообщения ; работает, например, с Gmail:

{Этот код поддерживает использование шифрования TLS/SSL; при отправке на порт 25 используется простой текстовый SMTP.}

uses
  ..., smtpsend,ssl_openssl; //вероятно, можно использовать и другие модули SSL.

// MailData - это текст письма.
function SendMail(
  User, Password, 
  MailFrom, MailTo, 
  SMTPHost, SMTPPort string; 
  MailData string) Boolean;
var
  SMTP TSMTPSend;
  slTStringList;
begin
  Result:=False;
  SMTP:=TSMTPSend.Create;
  sl:=TStringList.Create;
  try
    sl.text:=Maildata;
    SMTP.UserName:=User;
    SMTP.Password:=Password;
    SMTP.TargetHost:=SMTPHost;
    SMTP.TargetPort:=SMTPPort;
    SMTP.AutoTLS:=true;
    if Trim(SMTPPort)<>'25' then
      SMTP.FullSSL:=true; // при отправке на порт 25 шифрование не используется
    if SMTP.Login then
    begin
      result:=SMTP.MailFrom(MailFrom, Length(MailData)) and
         SMTP.MailTo(MailTo) and
         SMTP.MailData(sl);
      SMTP.Logout;
    end;
  finally
    SMTP.Free;
    sl.Free;
  end;
end;

Изменение строки StringBuilder

В следующей таблице перечислены методы, которые можно использовать для изменения содержимого объекта StringBuilder.

Имя метода Использовать
StringBuilder.Append Добавляет сведения в конец текущего объекта StringBuilder.
StringBuilder.AppendFormat Заменяет отформатированным текстом описатель формата, переданный в строке.
StringBuilder.Insert Вставляет строку или объект в указанный индекс текущего объекта StringBuilder.
StringBuilder.Remove Удаляет указанное количество символов из текущего объекта StringBuilder.
StringBuilder.Replace Замещает все вхождения указанного символа или строки в текущем StringBuilder на другой указанный символ или строку.

Добавить

Метод Append позволяет добавить текст или строковое представление объекта к концу строки, представленной текущим объектом StringBuilder. Следующий пример инициализирует StringBuilder с текстом Hello World, а затем добавляет текст в конец объекта. Пространство выделяется автоматически при необходимости.

AppendFormat

Метод StringBuilder.AppendFormat добавляет текс в конец объекта StringBuilder. Он поддерживает возможность составного форматирования (дополнительные сведения см. в статье Составное форматирование) путем вызова реализации IFormattable для одного или нескольких форматируемых объектов. Следовательно, он принимает строки стандартного формата для числовых значений, значений даты и времени, значений перечисления, строки пользовательского формата для чисел и дат и строки формата, определенные для пользовательских типов. (Дополнительные сведения о форматировании см. в разделе Типы форматирования.) Вы можете использовать этот метод для настройки формата переменных и добавления этих значений к StringBuilder. В следующем примере метод AppendFormat помещает в конец объекта StringBuilder целочисленное значение, отформатированное в виде значения валюты.

Insert

Метод Insert добавляет строку или объект в указанную позицию в текущем объекте StringBuilder. В следующем примере этот метод вставляет слово в шестую позицию объекта StringBuilder.

Удалить

Вы можете использовать метод Remove, чтобы удалить указанное количество символов из текущего объекта StringBuilder, начиная с указанного индекса (с отсчетом с нуля). В следующем примере метод Remove используется для сокращения объекта StringBuilder.

Замените

Метод Replace можно использовать для замены символов в объекте StringBuilder другими указанными символами. В следующем примере метод Replace находит все экземпляры восклицательного знака (!) в объекте StringBuilder и заменяет их знаками вопроса (?).

Совместимый ответ

На этот вопрос SO уже есть много разных способов сделать это в bash. Но у bash есть много специальных функций, так называемый bashism, которые хорошо работают, но не работают ни в одном другом shell.

В частности, массивы, ассоциативные массивы и подстановки шаблонов — это чистые ошибки и могут не работать под другими оболочками.

В моем Debian GNU/Linux есть стандартная оболочка под названием dash, но я знаю многих людей, которые любят использовать ksh.

Наконец, в очень маленькой ситуации есть специальный инструмент под названием busybox с собственным интерпретатором оболочки (ash).

Запрашиваемая строка

Пример строки в вопросе SO:

Поскольку это может быть полезно с пробелами и поскольку пробелы могут изменить результат процедуры, я предпочитаю использовать эту строку-образец:

Разделить строку на основе разделителя в bash (версия> = 4.2)

Под чистым bash мы можем использовать массивы и IFS:

Использование этого синтаксиса в недавнем bash не меняет для текущего сеанса, а только для текущей команды:

Теперь строка разделяется и сохраняется в массив (именованные ):

Мы могли бы запросить переменное содержимое с помощью :

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

Оттуда вы можете использовать синтаксис, который вы уже знаете, для обработки каждого поля:

или отбросить каждое поле после обработки (мне нравится этот подход смещения):

или даже для простой распечатки (более короткий синтаксис):

Обновление: недавно bash> = 4.4

Вы можете играть с :

Этот синтаксис сохраняет специальные символы, новые строки и пустые поля!

Если вам не нужны пустые поля, вы можете:

Но вы можете использовать поля через функцию:

(Примечание: в конце строки формата бесполезны, в то время как вам нет дела до пустых полей в конце строки)

Будет что-то вроде:

Или Удалить новую строку, добавленную с помощью синтаксиса bash в функции:

Будет отображать тот же результат:

Разделить строку на основе разделителя в shell

Но если бы вы написать что — то полезное под многими оболочками, вы должны не использовать bashisms.

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

(Отсутствие этого является основной причиной публикации моего ответа;)

Как указано :

Этот небольшой пример сценария хорошо работает в bash, dash, ksh, busybox и также был протестирован в Mac-OS bash:

Повеселись!

Как разбить текст по переносам строки.

Чтобы разделить слова в ячейке по переносам строки, используйте подходы, аналогичные тем, которые были продемонстрированы в предыдущем примере. Единственное отличие состоит в том, что вам понадобится функция СИМВОЛ (CHAR) для передачи символа разрыва строки, поскольку вы не можете ввести его непосредственно в формулу с клавиатуры.

Предположим, ячейки, которые вы хотите разделить, выглядят примерно так:

Напомню, что перенести таким вот образом текст внутри ячейки можно при помощи комбинации клавиш ALT + ENTER.

Возьмите инструкции из предыдущего примера и замените дефис («-») на СИМВОЛ(10), где 10 — это код ASCII для перевода строки.

Чтобы извлечь наименование товара:

Цвет:

Размер:

Результат вы видите на скриншоте выше.

Таким же образом можно работать и с любым другим символом-разделителем. Достаточно знать его код.

Другие статьи о Интернете и сетях

  • Web Development Portal
  • Networking
  • Networking libraries — сравнение различных сетевых библиотек
  • Brook Framework — Идеальный фреймворк Free Pascal для ваших веб-приложений. Это чистый Паскаль. Вам не нужно оставлять предпочитаемый язык программирования.
  • Sockets — Компоненты сокетов TCP/IP
  • fcl-net — Сетевая библиотека, поставляемая с FPC
  • lNet — Легковесные сетевые компоненты
  • Synapse — Последовательный порт и синхронная библиотека TCP/IP
  • XML Tutorial -XML, часто использующиеся в сетевых коммуникациях
  • FPC and Apache Modules
  • fcl-web — Также известная как fpWeb, это библиотека для разработки веб-приложений, которые можно развернуть как модули cgi, fastcgi или apache.
  • Безопасное программирование
  • Internet Tools — Обертка для HTTP-компонентов Synapse/wininet/Android, упрощающая https и перенаправления, и механизм XPath/XQuery/CSS Selector/JSONiq для обработки загруженных страниц.

Ключевая функция

substring_index(str,delim,count)

​ str: строка для обработки

​ delim: delimiter

​ count: count

Пример: str = f.s.z

​ substring_index(str,’.’,1)

Результат: f

​ substring_index(str,’.’,2)

Результат: f.s

Другими словами, если count — положительное число, то оно считается слева направо, все содержимое слева от N-го разделителя.

Напротив, если это отрицательное число, тогда считайте справа и все, что находится справа от N-го разделителя, например:

​ substring_index(str,’.’,-2)

Результат: s.z

Некоторые спросят, а что, если я хочу средние?

Очень просто, два направления:

Все справа от второго разделителя справа и слева от первого разделителя слева:

substring_index(substring_index(str,’.’,-2),’.’,1);

Console-Mode Pascal Programming

Many of us were writing Pascal programs long before Graphical User Interfaces (GUIs) and Integrated Development Environments (IDEs) became fashionable. Many others are beginners at Pascal programming and need to be able to try out the basic tools of the language. Still others need to write console- or text-mode applications in order to perform complex system control tasks.

Console mode programming without Lazarus

Even though many prefer to use the Lazarus IDE to write console mode programs, you can also write them with any text editor and compile them yourself by calling the FPC compiler, e.g. this for a program in example.pas:

fpc example.pas

Also, the text mode fp IDE (looks a bit like old Turbo Pascal) is available.
In the next sections we will focus on programming with Lazarus.

Console mode programming with Lazarus

Lazarus provides an ideal environment for learning Pascal, and for developing text-mode programs. All the functionality of the Integrated Development Environment can be used, including the Source Editor with its syntax highlighting, access to the libraries, complex searching and code completion tools, and syntax checking. If you do not want a Form with its visual components, you do not need one, but the Lazarus Source Editor is still a great environment for program development. You can compile and run your program during development, without ever leaving the Editor.

To start a console-mode program, go to the Main Menu and select Project -> New Project and then select either Program or Console Application. The IDE will not generate all the extra files associated with a full graphic application, and will not open an Object Inspector box, but will open the Source Editor with a skeleton program structure and await your programming input.

Note: Under Windows a GUI application has no console and thus can not writeln or readln. You will get File not open errors. Disable under Project Options / Compiler Options / Linking / Target specific options / Win32 GUI application to create a console application. In Lazarus IDE 1.4, this is under Project(menu) / Project Options / Compiler Options / Config and Target / Target specific options / Win32 GUI application.

Note: Lazarus has some functionality for command line programs, such as copyfile. To use these, add a project requirement for LazUtils, which will not pull in the entire LCL. Then add the relevant unit to your uses clause.

Project type: Console Application

Selecting this project type in Lazarus creates a program with a new class derived from TCustomApplication. TCustomApplication provides a lot of the common things and makes programming command line utilities easy. For example checking command line options, writing help, checking and exception handling. All LCL programs use this automatically.

Project type: Program

As a demonstration, we will write a very minimalistic Pascal program. In the IDE, select the ‘Program’ project type and let the IDE helps you a bit. For example when you add another unit the IDE will automatically add the unitname to the program uses section. This behavior is defined in the project options. So you can go between ‘Program’ and ‘Custom Program’ at any time.

An example for complete beginners:

program Project1;
{$mode objfpc}{$H+}
uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  Classes;
begin
  WriteLn('Hello World!');
  ReadLn;
end.

Pascal scripts

Additionally, it is possible to write scripts that are dynamically compiled by InstantFPC, a cross-platform solution to run (small) Pascal programs as scripts. The shebang

#!/usr/bin/env instantfpc

permits to start the script like a stand-alone program.

Note: Though it is used to run Pascal scripts, InstantFPC uses regular Object Pascal, not the PascalScript script language. So «PascalScript» and Pascal script are not the same.

Running a Program

Compile

When you have finished your program (or program fragment) you can compile and run it by selecting Run -> Build (or Quick Compile) from the Main Menu or clicking on the Green (Run) triangle symbol in the Button Bar. Any compiler messages (warnings, progress reports or error messages) will appear in the Message Box, and hopefully there will eventually be a message to say

‘Project «Project1» successfully built.:)’.

But where is the program??!!

If you have not yet saved the program, then the IDE put it into the temporary directory (e.g. /tmp under linux, C:\temp under windows, see Environment Options / Files / Directory for building test projects).

If you already saved the project, then the program was created in the same directory, where you saved the project1.lpi file.

Run in Console

You can execute the program by going to a console (terminal) window, then use cd to change to the directory and typing the name of the program. On Unix/Linux, if it is in the current directory you will have to start with ./ as the program will probably not be found in the PATH.

Example for Linux/Unix where a program is stored in /tmp:

cd /tmp 
./Project1

However, it can be very inconvenient to keep skipping out of the Lazarus Editor and into a terminal window and back again. Fortunately, there is a mechanism that allows a terminal window to be opened from within the Lazarus environment.

Run in IDE

In internal console: show in the terminal output window.

In redirect output.

From the Main Menu, select Run -> Run Parameters, then check the box for «Use launching application». The first time you do this and try the Compile/Run sequence, you will probably get a rude message saying:

"xterm: Can't execvp /usr/share/lazarus//tools/runwait.sh: Permission denied".  

If this happens, you need to change the permissions on the appropriate file (for example using chmod +x filename, or using the Windows utility for changing permissions); you might have to do this as root. After this, each time you launch your program, a console box will appear and all your text I/O (readln, writeln etc) will appear in it.

After your program has finished execution, a message «Press enter» appears on the screen. Thus any output your program generated will remain on the screen until you have had a chance to read it; after you press ‘enter’ the console window closes.

Unfortunately, this method does not allow you to use the integrated debugger.

Run in IDE with redirected output

If you want to see what is written to stdout and want to use the integrated debugger as well, stdout can be redirected to a file with the following code:

uses
  baseunix; 

var
  OutputFile text;

begin     
  Assign(OutputFile, 'Output.txt');
  if FileExists(Filename) then begin
    Append(OutputFile);
  end
  else begin
    Rewrite(OutputFile);   { open file for writing, destroying contents, if any }
  end;

  ResultCode := fpdup(OutputFile, output);

  if ResultCode <  then begin
    raise Exception.CreateFmt('dup failed: %s', ResultCode]);
  end;
  Close(OutputFile);
end.

Output.txt can then be viewed with ‘tail -f output.txt’ or viewed with an editor if ‘tail’ is not available on your os.

Alternatively, using Lazarus 0.9.31 or up (on Linux only): In the «View» menu, under «Debug Windows» there is an entry for a «console output» to view stdout

Как разделить ячейку вида ‘текст + число’.

Начнем с того, что не существует универсального решения, которое работало бы для всех буквенно-цифровых выражений. Выбор зависит от конкретного шаблона, по которому вы хотите разбить ячейку. Ниже вы найдете формулы для двух наиболее распространенных сценариев.

Предположим, у вас есть столбец смешанного содержания, где число всегда следует за текстом. Естественно, такая конструкция рассматривается Excel как символьная. Вы хотите поделить их так, чтобы текст и числа отображались в отдельных ячейках.Результат может быть достигнут двумя разными способами.

Метод 1. Подсчитайте цифры и извлеките это количество символов

Самый простой способ разбить выражение, в котором число идет после текста:

Чтобы извлечь числа, вы ищите в строке все возможные числа от 0 до 9, получаете общее их количество и отсекаете такое же количество символов от конца строки.

Если мы работаем с ячейкой ​​A2:

Чтобы извлечь буквы, вы вычисляете, сколько их у нас имеется. Для этого вычитаем количество извлеченных цифр (C2) из ​​общей длины исходной ячейки A2. После этого при помощи ЛЕВСИМВ отрезаем это количество символов от начала ячейки.

здесь  A2 – исходная ячейка, а C2 — извлеченное число, как показано на скриншоте:

Метод 2: узнать позицию 1- й цифры в строке

Альтернативное решение — использовать эту формулу массива для определения позиции первой цифры:

Как видите, мы последовательно ищем каждое число из массива {0,1,2,3,4,5,6,7,8,9}. Чтобы избежать появления ошибки если цифра не найдена, мы после содержимого ячейки A2 добавляем эти 10 цифр. Excel последовательно перебирает все символы в поисках этих десяти цифр. В итоге получаем опять же массив из 10 цифр — номеров позиций, в которых они нашлись. И из них функция МИН выбирает наименьшее число. Это и будет та позиция, с которой начинается группа чисел, которую нужно отделить от основного содержимого.

Также обратите внимание, что это формула массива и ввод её нужно заканчивать не как обычно, а комбинацией клавиш + +. Как только позиция первой цифры найдена, вы можете разделить буквы и числа, используя очень простые формулы ЛЕВСИМВ и ПРАВСИМВ

Как только позиция первой цифры найдена, вы можете разделить буквы и числа, используя очень простые формулы ЛЕВСИМВ и ПРАВСИМВ.

Чтобы получить текст:

Чтобы получить числа:

Где A2 — исходная строка, а B2 — позиция первого числа.

Чтобы избавиться от вспомогательного столбца, в котором мы вычисляли позицию первой цифры, вы можете встроить МИН в функции ЛЕВСИМВ и ПРАВСИМВ:

Для вытаскивания текста:

Для чисел:

Этого же результата можно достичь и чуть иначе.

Сначала мы извлекаем из ячейки числа при помощи вот такого выражения:

То есть, сравниваем длину нашего текста без чисел с его исходной длиной, и получаем количество цифр, которое нужно взять справа. К примеру, если текст без цифр стал короче на 2 символа, значит справа надо «отрезать» 2 символа, которые и будут нашим искомым числом.

А затем уже берём оставшееся:

Как видите, результат тот же. Можете воспользоваться любым способом.

Распределение текста с разделителями на 3 столбца.

Предположим, у вас есть список одежды вида Наименование-Цвет-Размер, и вы хотите разделить его на 3 отдельных части. Здесь разделитель слов – дефис. С ним и будем работать.

  1. Чтобы извлечь Наименование товара (все символы до 1-го дефиса), вставьте следующее выражение в B2, а затем скопируйте его вниз по столбцу:

Здесь функция мы сначала определяем позицию первого дефиса («-«) в строке, а ЛЕВСИМВ извлекает все нужные символы начиная с этой позиции. Вы вычитаете 1 из позиции дефиса, потому что вы не хотите извлекать сам дефис.

  1. Чтобы извлечь цвет (это все буквы между 1-м и 2-м дефисами), запишите в C2, а затем скопируйте ниже:

Логику работы ПСТР мы рассмотрели чуть выше.

  1. Чтобы извлечь размер (все символы после 3-го дефиса), введите следующее выражение в D2:

Аналогичным образом вы можете в Excel разделить содержимое ячейки в разные ячейки любым другим разделителем. Все, что вам нужно сделать, это заменить «-» на требуемый символ, например пробел (« »), косую черту («/»), двоеточие («:»), точку с запятой («;») и т. д.

Примечание. В приведенных выше формулах +1 и -1 соответствуют количеству знаков в разделителе. В нашем примере это дефис (то есть, 1 знак). Если ваш разделитель состоит из двух знаков, например, запятой и пробела, тогда укажите только запятую («,») в ваших выражениях и используйте +2 и -2 вместо +1 и -1.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Все про сервера
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: