2014-01-13 3 views
0

Я несколько строк сцепляются вместеперемещения строки в JavaScript

"[thing 1,thing 2,cat in the hat,Dr. Suese]" 

Я хотел бы, чтобы пересечь эту строку, чтобы остановить в определенном запятой (данный индекс) и возвращает подстроку сразу после запятой и до следующая запятая. Проблема в том, что мне нужно сделать это в JavaScript. Я полагаю, что это будет что-то вроде этого

function returnSubstring(i,theString){ 
    var j,k = 0; 
    while(theString.charCodeAt(k) != ','){ 
     while(i > 0){ 
      if (theString.charCodeAt(j) == ','){ 
       i--; 
      } 
      j++; 
     } 
     k++; 
    } 
    return theString.substring(j,k); 
} 

Является ли это то, что он должен выглядеть или есть какой-то синтаксис вопрос здесь

+2

Могут ли ваши данные поступать только в таком формате? Почему бы не использовать JSON для сериализации данных? – lonesomeday

+0

Вы имеете в виду индекс запятой между запятыми (т. Е. Вторая запятая) или индекс запятой в строке (т. Е. Первая запятая после двадцатого символа)? –

ответ

2

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

-> Давайте предположим, что специфический индекс для запятой ACCPETED 8 т.е. первого индекса запятой, вы можете сделать:

var givenCommaIndex = 8; 
var value = "[thing 1,thing 2,cat in the hat,Dr. Suese]"; 
var subString = value.substring(givenCommaIndex+1, value.indexOf(",", givenCommaIndex+1)); 
console.log(subString); 

// Output : 
"thing 2" 

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

function getSubString(str, delimiter, indexOfDelimiter) { 
    // TODO : handle specific cases like str is undefined or delimiter is null 
    return str.substring(indexOfDelimiter+1, str.indexOf(delimiter, indexOfDelimiter+1)); 
} 
+0

yup, это работает! Спасибо! – wjhplano

+0

Добро пожаловать :) –

2

Вы можете split:

var token = "[thing 1,thing 2,cat in the hat,Dr. Suese]" 
    .slice(1,-1) // remove [ and ] 
    .split(',') 
    [2]; // the third token 

Или использовать регулярное выражение:

var token = "[thing 1,thing 2,cat in the hat,Dr. Suese]" 
    .match(/([^\]\[,]+)/g) 
    [2]; 
+0

Он хочет ввести индекс запятой. – thefourtheye

+0

@thefourtheye Это не ясно для меня. Я добавил вопрос в комментарии. –

+0

@ thefoureye мой плохой. один заблаговременно. '(j + 1, j + k-1)' я думаю, – wjhplano

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