2015-08-08 3 views
4

У меня есть один значение переменной объекта в следующем формате:JavaScript Строка расщепленный на основе значения

"Landing Hits: 0Rewards Hits: 0Facebook Posts: 0Twitter Tweets: 0Twitter Autofollows: 0Instagram Photos: 0Instagram Likes: 0Instagram Votes: 0Pinterest Pins: 0Form Submissions: 0Submissions: 0Engagement: 0Views: 0Prints: 0" 

Мне нужно, чтобы преобразовать его в:

"Landing Hits: 0, Rewards Hits: 0, Facebook Posts: 0, Twitter Tweets: 0, Twitter Autofollows: 0, Instagram Photos: 0, Instagram Likes: 0, Instagram Votes: 0, Pinterest Pins: 0, Form Submissions: 0, Submissions: 0, Engagement: 0, Views: 0, Prints: 0" 

Любые идеи, как это сделать?

+0

кажется, что вы должны изменить исходные – charlietfl

ответ

4

Вы можете использовать RegEx для поиска совпадений.

var str = "Landing Hits: 0Rewards Hits: 0Facebook Posts: 0Twitter Tweets: 0Twitter Autofollows: 0Instagram Photos: 0Instagram Likes: 0Instagram Votes: 0Pinterest Pins: 0Form Submissions: 0Submissions: 0Engagement: 0Views: 0Prints: 0"; 
 

 
var arr = str.match(/[^:]+\s*:\s*\d+/g); //Find values like `String:Number` 
 

 
var out = arr.join(", "); //Convert array matches to String 
 

 
document.write("<pre>" + out + "</pre>"); //Test

Просто замените: Если вам нужно только заменить строку, вы можете также сделать это:

var str = "Landing Hits: 0Rewards Hits: 0Facebook Posts: 0Twitter Tweets: 0Twitter Autofollows: 0Instagram Photos: 0Instagram Likes: 0Instagram Votes: 0Pinterest Pins: 0Form Submissions: 0Submissions: 0Engagement: 0Views: 0Prints: 0"; 
 

 
var formatted = str.replace(/(\d)(\w)/g, "$1, $2"); 
 

 
document.write(formatted)

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

var str= "Landing Hits: 0Rewards Hits: 0Facebook Posts: 0Twitter Tweets: 0Twitter Autofollows: 0Instagram Photos: 0Instagram Likes: 0Instagram Votes: 0Pinterest Pins: 0Form Submissions: 0Submissions: 0Engagement: 0Views: 0Prints: 0" 
 
, regex = /([^:]+)\s*:\s*(\d+)/g, collection = {}, temp; 
 

 
while(temp = regex.exec(str)){ 
 
    collection[temp[1]] = +temp[2] 
 
} 
 

 
console.log(collection)

enter image description here

+0

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

+0

Вы могли бы привести пример в своем вопросе? –

+0

Я создал функцию загрузки csv. Итак, когда я загружаюсь в файл excel, ключ и значение идут в том же столбце. Итак, просто пытался получить значение только в втором столбце, относящемся к ключу. –

0

Вы можете попробовать это:

var c = "Landing Hits: 0345Rewards Hits: 0Facebook Posts: 0Twitter Tweets: 034534532Twitter Autofollows: 0Instagram Photos: 0Instagram Likes: 0Instagram Votes: 0Pinterest Pins: 0Form Submissions: 0Submissions: 0Engagement: 0Views: 0Prints: 0"; 
    var array = [] 
    var counter = 0; 
    var num; 
    var dup = ""; 
    for (var i = 0; i < c.length; i++) { 
     dup += c[i]; 
     if (c[i]==":"){dup+=" ";} 
     if (!isNaN(c[i]) && isNaN(c[i+1]) && c[i]!=" ") { 
      dup += ", " 
     } 
    } 
     alert(dup); 

URL (скрипка): https://jsfiddle.net/eugensunic/kphe5fbL/13/

0

добавьте следующую строку в коде

var str = "Landing Hits: 0Rewards Hits: 0Facebook Posts: 0Twitter Tweets: 0Twitter Autofollows: 0Instagram Photos: 0Instagram Likes: 0Instagram Votes: 0Pinterest Pins: 0Form Submissions: 0Submissions: 0Engagement: 0Views: 0Prints: 0"; 
 

 
alert(str.replace(/0|_/g,'0,'));

+0

Значение не всегда будет равным нулю –

0

Вам не нужно Regex:

var str = "Landing Hits: 0Rewards Hits: 0Facebook Posts: 0Twitter Tweets: 0Twitter Autofollows: 0Instagram Photos: 0Instagram Likes: 0Instagram Votes: 0Pinterest Pins: 0Form Submissions: 0Submissions: 0Engagement: 0Views: 0Prints: 0"; 
var newStr = str.split(0).join('0, ').slice(0, -2); 
Смежные вопросы