2016-02-18 5 views
-1

У меня есть вход, и мне нужно взять слово после слова в JavaScript. Я пытаюсь думать, как создать regexp для этого, но я не понимаю логики.Как взять слово после слова в JavaScript?

Одним из примеров пользовательского ввода:

input reg a, 
input b, 
input int p, f, g, 
output logic c, 
output k; 

Итак, у меня есть слово (input, output), которые будут выполняться для типа (или подавленной), затем имя переменной, пока не получите ;. Поэтому мне нужно сделать regexp, где после того, как пользователь закончит писать код, он вернет мне имя входов и выходов. В этом примере он должен вернуть что-то вроде a,b,p,f,g,c,k.

Просьба представить любые идеи, как это сделать?

+1

вы можете использовать [заменить] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace), как этот 'val = val.replace ('input', '');' или вы можете анализировать regexp как аргумент 'replace' –

+0

Как я отвечаю на amflare, проблема в том, что будет существовать больше текст перед «ввод» и многое другое после «вывода», поэтому я должен быть уверен, что текст, который я беру, находится непосредственно перед этими ключевыми словами, и предположим, что это может быть слово перед словом, которое я хочу, или нет. «input int a», «input b», «логика ввода a, b, c». В этом случае необходимо взять «a» после int, b после ввода и a, b, c после логика. И в вашем примере он считает, что у меня есть пустое место после ввода, но пользователь может поставить два, например. В любом случае проблема заключается в словах после и перед этими входами и выходами. Спасибо за Ваш ответ! –

ответ

0

Он не нуждается в регулярных выражениях, вы можете решить с яваскриптом

var string = userInput.split(' '); 
var inputOutput = string[0]; 
var wordAfter = string[1]; 

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

+0

Я думал об этом .. Но проблема в том, что будет существовать больше текста до «ввода» и более после «вывода», поэтому я должен быть уверен, что текст, который я беру, находится непосредственно перед этими ключевыми словами, и предположим, что это может быть слово перед словом, которое я хочу, или нет «input int a», «input b», «логика ввода a, b, c». В этом случае необходимо взять «a» после int, b после ввода и a, b, c после логика. Спасибо, в любом случае! –

0

использовать это:

var value_ = document.querySelector("textarea").value; 
var varArr = []; 
for(var i=0; i<value_.length; i++){ 
    if(value_.charAt(i)=="," || value_.charAt(i)==";"){ 
     varArr.push(value_.charAt(i-1)); 
    } 
} 

смотрите по этой ссылке: https://plnkr.co/edit/QOiakDJg4dR3BMTmGCRQ?p=preview

+0

Для примера это отлично работало! Но мне действительно нужно найти эти ключевые слова или что-то в этом роде, из-за этого я думал о regEx, идеал должен взять код какого-то пользователя и взять эти слова после слова. Один из примеров «полного» кода, который мог написать пользователь, можно найти здесь: https://plnkr.co/edit/PC9ldSUlj8yXO3wBsJPf?p=preview и в этом случае, к сожалению, эта логика не работает. Спасибо за помощь. –

+0

Я думаю, что вы пытаетесь сделать компилятор .... – Sandeep

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