One place for hosting & domains

      строками

      Индексация, разделение и управление строками в JavaScript


      Введение

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

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

      Примитивы и объекты String

      Для начала мы расскажем о двух типах строк. JavaScript различает примитив string, или неизменный тип данных, и объект String.

      Чтобы показать различия, мы инициализируем примитив строки и объект строки.

      // Initializing a new string primitive
      const stringPrimitive = "A new string.";
      
      // Initializing a new String object
      const stringObject = new String("A new string.");  
      

      Для определения типа значения можно использовать оператор typeof. В первом примере мы просто назначили строку переменной.

      typeof stringPrimitive;
      

      Output

      string

      Во втором примере мы использовали new String() для создания объекта строки и назначения его переменной.

      typeof stringObject;
      

      Output

      object

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

      Хотя эта концепция довольно сложная, вам следует понимать различия между примитивом и объектом. Методы и свойства доступны всем строкам, и JavaScript в фоновом режиме выполняет преобразование примитивов в объекты и обратно каждый раз, когда вызываются метод или свойство.

      Процедура индексации строк

      Каждому из символов в строке соответствует числовой индекс, начиная с 0.

      Для наглядности мы создадим строку со значением How are you?.

      H o w a r e y o u ?
      0 1 2 3 4 5 6 7 8 9 10 11

      Первый символ этой строки — H, ему соответствует индекс 0. Последний символ — ?, соответствующий символу 11. У символов пробела также имеются индексы на позициях 3 и 7.

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

      Доступ к символам

      Мы продемонстрируем, как получить доступ к символам и индексам в строке How are you?.

      "How are you?";
      

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

      "How are you?"[5];
      

      Output

      r

      Также мы можем использовать метод charAt() для возврата символа, используя числовой индекс в качестве параметра.

      "How are you?".charAt(5);
      

      Output

      r

      Другой способ: мы можем использовать indexOf() для возврата числового индекса для первого экземпляра символа.

      "How are you?".indexOf("o");
      

      Output

      1

      Хотя “o” появляется в строке How are you? дважды, метод indexOf() выдаст результат для первого экземпляра.

      lastIndexOf() используется для поиска последнего экземпляра.

      "How are you?".lastIndexOf("o");
      

      Output

      9

      С помощью обоих этих методов также можно найти несколько символов в строке. Он возвращает индекс первого символа в экземпляре.

      "How are you?".indexOf("are");
      

      Output

      4

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

      "How are you?".slice(8, 11);
      

      Output

      you

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

      Если второй параметр не указывается, slice() возвращает все символы от первого параметра до конца строки.

      "How are you?".slice(8);
      

      Output

      you?

      Таким образом, charAt() и slice() возвращают значения строк по числовым индексам, а indexOf() и lastIndexOf() имеют противоположное действие, возвращая числовые индексы по заданным символам строки.

      Определение длины строки

      Свойство length позволяет вывести количество символов в строке.

      "How are you?".length;
      

      Output

      12

      Помните, что свойство length возвращает фактическое количество символов, начиная с 1, то есть, 12, а не последний числовой индекс диапазона, который начинается с 0 и заканчивается 11.

      Преобразование в верхний или нижний регистр

      Встроенные методы toUpperCase() и toLowerCase() можно использовать для форматирования и сравнения текста в JavaScript.

      toUpperCase() конвертирует все символы в верхний регистр.

      "How are you?".toUpperCase();
      

      Output

      HOW ARE YOU?

      toLowerCase() конвертирует все символы в нижний регистр.

      "How are you?".toLowerCase();
      

      Output

      how are you?

      Эти два метода форматирования не принимают дополнительных параметров.

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

      Разделение строк

      В JavaScript имеется полезный метод разделения строк по символу и создания нового массива из полученных частей. Мы используем метод split() для разделения массива по символу пробела, представленного " ".

      const originalString = "How are you?";
      
      // Split string by whitespace character
      const splitString = originalString.split(" ");
      
      console.log(splitString);
      

      Output

      [ 'How', 'are', 'you?' ]

      Теперь мы получили новый массив в переменной splitString и можем получить доступ к каждому разделу с помощью числового индекса.

      splitString[1];
      

      Output

      are

      Если указан пустой параметр, split() создаст разделенный запятыми массив, содержащий все символы в строке.

      Разделяя строки, вы можете определить, сколько слов содержится в предложении, или использовать метод для определения имен и фамилий людей.

      Обрезка пробелов

      Метод JavaScript trim() удаляет пробелы с обоих концов строки, но не из промежутка между ними. Пробелами могут являться обычные пробелы или символы табуляции.

      const tooMuchWhitespace = "     How are you?     ";
      
      const trimmed = tooMuchWhitespace.trim();
      
      console.log(trimmed);
      

      Output

      How are you?

      Метод trim() — это простой способ выполнения распространенной задачи по удалению лишних пробелов.

      Поиск и замена значений строк

      Мы можем использовать метод replace(), чтобы найти в строке значение и заменить его новым значением. Первым параметром будет искомое значение, а вторым параметром — значение, которое его заменит.

      const originalString = "How are you?"
      
      // Replace the first instance of "How" with "Where"
      const newString = originalString.replace("How", "Where");
      
      console.log(newString);
      

      Output

      Where are you?

      Помимо замены значений в строках, мы также можем использовать регулярные выражения для расширения возможностей метода replace(). Например, replace() влияет только на первое значение, но мы можем использовать флаг g (глобальный), чтобы найти все экземпляры значения, и флаг i (без учета регистра), чтобы игнорировать регистр.

      const originalString = "Javascript is a programming language. I'm learning javascript."
      
      // Search string for "javascript" and replace with "JavaScript"
      const newString = originalString.replace(/javascript/gi, "JavaScript");
      
      console.log(newString);
      

      Output

      JavaScript is a programming language. I'm learning JavaScript.

      Это очень распространенная задача с использованием регулярных выражений. Посетите Regexr, чтобы потренироваться с другими примерами регулярных выражений.

      Заключение

      Строки — один из самых распространенных типов данных, и с ними можно выполнять множество разных операций.

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

      Более общий обзор строк можно найти в учебном модуле Работа со строками в JavaScript.



      Source link

      Начало работы со строками в Go


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

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

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

      Строковые литералы

      В Go строки добавляются либо внутри обратных кавычек ` (иногда их называют еще обратными метками) или внутри двойных кавычек ". В зависимости от того, какие кавычки вы использовать, строка будет иметь различные характеристики.

      При использовании обратных кавычек, например, `bar`, будет создаваться необработанный строковый литерал. В необработанном строковом литерале любой символ может появляться между кавычками, за исключением обратных кавычек. Ниже представлен пример необработанного строкового литерала:

      `Say "hello" to Go!`
      

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

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

      `Go is expressive, concise, clean, and efficient.
      Its concurrency mechanisms make it easy to write programs
      that get the most out of multi-core and networked machines,
      while its novel type system enables flexible and modular
      program construction. Go compiles quickly to machine code
      yet has the convenience of garbage collection and the power
      of run-time reflection. It's a fast, statically typed,
      compiled language that feels like a dynamically typed,
      interpreted language.`
      

      Интерпретируемые строковые литералы — это последовательность символов внутри двойных кавычек, например, "bar". Внутри кавычек отображается любой символ, за исключением символа переноса строки и неэкранированных двойных кавычек.

      "Say "hello" to Go!"
      

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

      Теперь, когда вы знаете, как выполняется форматирование строк в Go, давайте посмотрим, как вы можете выводить строки на экран в своих программах.

      Вывод строк на экран

      Вы можете вывести на экран строки с помощью пакета fmt из системной библиотеки и вызова функции Println():

      fmt.Println("Let's print out this string.")
      

      Output

      Let's print out this string.

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

      package main
      
      import "fmt"
      
      func main() {
          fmt.Println("Let's print out this string.")
      }
      

      Конкатенация строк

      Конкатенация — это объединение строк для получения новой строки. Для выполнения конкатенации строк воспользуйтесь оператором +. Необходимо учитывать, что при работе с числами оператор + будет выполнять сложение, а при работе со строками будет выполняться конкатенация.

      Давайте объединим строковые литералы "Sammy" и "Shark" с помощью выражения fmt.Println():

      fmt.Println("Sammy" + "Shark")
      

      Output

      SammyShark

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

      fmt.Println("Sammy " + "Shark")
      

      Output

      Sammy Shark

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

      fmt.Println("Sammy" + 27)
      

      Вы получите следующие ошибки:

      Output

      cannot convert "Sammy" (type untyped string) to type int invalid operation: "Sammy" + 27 (mismatched types string and int)

      Если вы хотите создать строку "Sammy27", вы можете поместить число 27 в кавычки ("27"), в результате чего оно больше не будет числом, а превратится в строку. Преобразование чисел в строки для выполнения конкатенации может быть полезным при работе с почтовыми индексами или телефонными номерами. Например, вы не хотите выполнять сложение кода страны и кода города, а хотите поместить их рядом.

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

      Хранение строк в переменных

      Переменные — это символы, которые вы можете использовать для хранения данных в программе. Их можно сравнить с пустой коробкой, в которую вы помещаете данные или значение. Строки — это данные, а значит вы можете использовать их для заполнения переменной. Объявление строк в качестве переменных упрощает работу со строками в ваших программах Go.

      Чтобы сохранить строку внутри переменной, нужно просто назначить переменную для строки. В нашем случае мы объявим s как переменную:

      s := "Sammy likes declaring strings."
      

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

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

      fmt.Println(s)
      

      Вы получите следующий вывод:

      Output

      Sammy likes declaring strings.

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

      Заключение

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



      Source link