Javascript подстрока между символами

String.prototype.substring()

Метод substring() возвращает подстроку строки между двумя индексами, или от одного индекса и до конца строки.

Синтаксис

str.substring(indexA[, indexB])

Параметры

Целое число от 0 до длины строки, определяющее смещение в строке первого символа, который будет включён в результирующую подстроку.

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

Описание

Метод substring() извлекает символы, начиная с индекса indexA до, но не включая, индекс indexB . В частности:

  • Если аргумент indexA равен аргументу indexB , метод substring() вернёт пустую строку.
  • Если аргумент indexB опущен, метод substring() извлечёт символы до конца строки.
  • Если любой из аргументов меньше, либо равен нулю или равен NaN , он будет трактоваться как равный 0.
  • Если любой из аргументов больше, чем stringName.length , он будет трактоваться как равный stringName.length .

Если аргумент indexA будет больше аргумента indexB , то метод substring() сработает так, как если бы аргументы были поменяны местами; например, str.substring(1, 0) == str.substring(0, 1) .

Примеры

Пример: использование метода substring()

В следующем примере метод substring() используется для отображения символов из строки ‘Mozilla’ :

var anyString = 'Mozilla'; // Отобразит 'Moz' console.log(anyString.substring(0, 3)); console.log(anyString.substring(3, 0)); // Отобразит 'lla' console.log(anyString.substring(4, 7)); console.log(anyString.substring(7, 4)); // Отобразит 'Mozill' console.log(anyString.substring(0, 6)); // Отобразит 'Mozilla' console.log(anyString.substring(0, 7)); console.log(anyString.substring(0, 10)); 

Пример: использование метода substring() вместе со свойством length

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

// Отобразит 'illa' - последние 4 символа var anyString = 'Mozilla'; var anyString4 = anyString.substring(anyString.length - 4); console.log(anyString4); // Отобразит 'zilla' - последние 5 символов var anyString = 'Mozilla'; var anyString5 = anyString.substring(anyString.length - 5); console.log(anyString5); 

Пример: замена подстроки в строке

Следующий пример демонстрирует замену подстроки в строке. Он заменит как отдельные символы, так и целые подстроки. Вызов функции в конце примера изменит строку ‘Дивный новый мир’ на строку ‘Дивный новый веб’ .

// Заменяет oldS на newS в строке fullS function replaceString(oldS, newS, fullS)  for (var i = 0; i  fullS.length; ++i)  if (fullS.substring(i, i + oldS.length) == oldS)  fullS = fullS.substring(0, i) + newS + fullS.substring(i + oldS.length, fullS.length); > > return fullS; > replaceString('мир', 'веб', 'Дивный новый мир'); 

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

function replaceString(oldS, newS, fullS)  return fullS.split(oldS).join(newS); > 

Код выше следует рассматривать всего лишь как пример работы с подстроками. Если вам нужно заменить подстроки, скорее всего вы захотите использовать метод String.prototype.replace() .

Спецификации

Совместимость с браузерами

BCD tables only load in the browser

Смотрите также

Found a content problem with this page?

This page was last modified on 22 окт. 2022 г. by MDN contributors.

Your blueprint for a better internet.

Источник

Получить подстроку между двумя символами, используя JavaScript

Кто-нибудь знает, как я буду делать это при каждом появлении подстроки между моей начальной и конечной строкой?

@tom, хотя «8 секунд» без контекста не несет никакой значимой информации — но я уверен, что это не различие в одном прогоне)

Вы также можете попробовать следующее:

var str = 'one:two;three'; str.split(':').pop().split(';').shift(); // returns 'two' 
var s = 'MyLongString:StringIWant;'; var arrStr = s.split(/[:;]/); alert(arrStr); 

arrStr будет содержать всю строку, помеченную : или ;
Поэтому доступ к каждой строке через for-loop

Строка, которую я хочу, находится между [], и это не работает . например: ‘MyLongString [StringIWant]’. Split (/ [[]] /);

@Philippe Для вашего варианта использования используйте это регулярное выражение \[(.*?)\] —> Короче говоря, вам нужно избегать квадратных скобок, так как [] обозначает класс символов в регулярном выражении.

var s = 'MyLongString:StringIWant;'; /:([^;]+);/.exec(s)[1]; // StringIWant 

перевод: «/» запустить шаблон. Сопоставьте «:» с «[]» что-нибудь из «^;» не точка с запятой «+» несколько раз, а затем найти «;» точка с запятой и «/» заканчивают шаблон.

@Babasaheb Gosavi Answer is perfect, если у вас есть одно появление подстрок ( «:» и «;» ). но как только у вас будет несколько случаев, это может немного запутаться.

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

  • Первый метод: — фактически получить подстроку из двух строк (однако он найдет только один результат).
  • Второй метод: удалит (будущий) последний найденный результат с подстроками после и до него.
  • Третий метод: будет выполнять эти два метода рекурсивно по строке.
  • Четвертый метод: применит третий метод и вернет результат.

код

Достаточно говорить, посмотрим код:

var getFromBetween = < results:[], string:"", getFromBetween:function (sub1,sub2) < if(this.string.indexOf(sub1) < 0 || this.string.indexOf(sub2) < 0) return false; var SP = this.string.indexOf(sub1)+sub1.length; var string1 = this.string.substr(0,SP); var string2 = this.string.substr(SP); var TP = string1.length + string2.indexOf(sub2); return this.string.substring(SP,TP); >, removeFromBetween:function (sub1,sub2) < if(this.string.indexOf(sub1) < 0 || this.string.indexOf(sub2) < 0) return false; var removal = sub1+this.getFromBetween(sub1,sub2)+sub2; this.string = this.string.replace(removal,""); >, getAllResults:function (sub1,sub2) < // first check to see if we do have both substrings if(this.string.indexOf(sub1) < 0 || this.string.indexOf(sub2) < 0) return; // find one result var result = this.getFromBetween(sub1,sub2); // push it to the results array this.results.push(result); // remove the most recently found one from the string this.removeFromBetween(sub1,sub2); // if there more substrings if(this.string.indexOf(sub1) >-1 && this.string.indexOf(sub2) > -1) < this.getAllResults(sub1,sub2); >else return; >, get:function (string,sub1,sub2) < this.results = []; this.string = string; this.getAllResults(sub1,sub2); return this.results; >>; 

Как использовать?

Пример:

var str = 'this is the haystack >> >> >> >> >> some text >> end of haystack'; var result = getFromBetween.get(str,">>"); console.log(result); // returns: [0,1,2,3,4,5] 

Источник

Читайте также:  Paragraph example
Оцените статью