2016-08-16 3 views
-1

У меня есть три переменные:Вычитая два текстовых переменных

Основная строка:

The quick brown fox jumps over the lazy dog. 

Первая подстрока:

over the lazy dog. 

И вторая подстрока:

the lazy dog. 

Я пытаюсь изолировать слово "over" путем вычитания первой строки из первой строки.

Edit:

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

+0

→ http: //regular-expressions.info... !? – deceze

+2

Как именно вы знаете длины '21' и' -12', но не знаете длины строки, которую ищете? – deceze

+1

Как насчет разделения строки в компонентах (используя темп в качестве разделителя) и реконструировать две части? Это может работать только в том случае, если вы заранее знаете основную структуру строки (т. Е. Количество полей, их порядок и значение). – FDavidov

ответ

0

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

var metar = document.getElementById("metartext").innerHTML; 
var result = metar.substring(21, metar.length - 11); 

console.log(result); 
1

Вы можете соответствовать все после первого пробела с /\s+(.*)/:

var s = "CAVOK 18/13 Q1025"; 
 
var m = s.match(/\s+(.*)/); 
 
if (m) { 
 
    console.log(m[1]); 
 
}

детали Pattern:

  • \s+ - 1 или более пробельные (первые пробелы будут получить соответствие)
  • (.*) - ноль или более символов, отличных от CR/LF (все остальные строки).
0

Это должно work--

var cloud1 = "CAVOK 18/13 Q1025"; 
 
var cloud2 = "18/13 Q1025"; 
 

 
var result = cloud1.replace(' '+cloud2,''); 
 

 
console.log(result)

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

0

Вы можете использовать использовать метод replace на полную строку и заменить выходные с «», чтобы получить результат

var cloud = cloud1.replace(cloud2, ""); 
0

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

var metar = 'YSSY 161000Z 02007KT CAVOK 18/13 Q1025'; 
 
var result = metar.match(/(?:.{20}\s)(\S*)(?:\s.{11})/)[1]; 
 

 
console.log(result);

0

Вы можете избежать использования длины с Regular Expressions и соответствовать слово, которое до даты в формате "18/13":

var metar = document.getElementById("metartext").innerHTML, 
 
    result = /(\w+) [0-9]{2}\/[0-9]{2}/.exec(metar); 
 

 
result && console.log(result[1]); // CAVOK
<p id="metartext">YSSY 161000Z 02007KT CAVOK 18/13 Q1025</p>

Смежные вопросы