2017-03-20 42 views
2

我有文字:如果在JavaScript中的兩個字符之間存在空格,我該如何跳過空格?

first.getage() person.getinfo(tow.fff(one) , data) car.getcompany fff 

我想要得到的輸出:

first.getage()/person.getinfo(tow.fff(one) , data)/car.getcompany/fff 

我的問題,當我分裂的空間,我得到的輸出:

first.getage(/)/person.getinfo(/tow.fff(one)/data/,/)/car.getcompany/fff 

這種情況發生因爲我在(「()」)之間有空格,所以如果空格在弧線之間,我怎麼可以跳過這個空格,所以我想要的輸出是:

first.getage()/person.getinfo(tow.fff(one) , data)/car.getcompany/fff 

有幫助嗎?

+0

你在使用?正則表達式?分裂? – zer00ne

+0

看起來你實際上並不想按空格符分割。 – Amy

+1

@tymeJV我認爲'**'是OP失敗的格式。 – zer00ne

回答

0

好,結果是要求什麼,請記住,這是在搜索與尋找弧線不同的上下文。此外,這取決於首先修剪線條的情況。詳細信息在Snippet中進行了評論。

代碼片段

// Raw string 
 
var str = ' first.getage() person.getinfo(tow.fff(one) , data) car.getcompany '; 
 

 
// Trim the space off of th start and end of str 
 
var str = str.replace(/(^\s+|\s+$)/g, ''); 
 

 
/* This says: 
 
|| Find any literal fragment that is ".get" 
 
|| Then find everything that's a character before ".get"... 
 
|| until there's a space. 
 
|| Now replace that particular space with: 
 
|| a space,/, and another space 
 
*/ 
 
var rgx = /\s\b(?=\w*(?=\.get))/g; 
 

 
var res = str.replace(rgx, ' \/ '); 
 

 
console.log(res);

+0

再次閱讀問題,您會看到OP要求包含fff。所以你不能全部基於'.get'字符串 –

+1

@NelsonTeixeira你爲什麼不閱讀編輯?之後再添加這個fff。你爲什麼要編輯OP的字符串?指向空格?這完全改變了這個問題。 – zer00ne

+0

但無論如何,即使它後來增加現在這個答案沒有意義,你不覺得嗎? –

1

我試圖爲此創建一個正則表達式,但不成功。如果有人可以做一個正則表達式,那當然會更好。但無論如何,如果正則表達式不能幫助我們,我們回到舊的方法。所以在這裏不用在一個老式的風格:

function mySplitStr(str) { 
 
    var inFunction = 0; 
 
    str = str.trim().replace(/\s+/g,' '); 
 
    str.split('').forEach((chr, ix)=>{ 
 
    chr == '(' || inFunction++; 
 
    chr == ')' || inFunction--; 
 
    if ((chr == ' ') && (!inFunction)) 
 
     str = str.substr(0, ix) + '|' + str.substr(ix + 1); 
 
    }); 
 
    return str.split('|'); 
 
} 
 

 
var str = " first.getage() person.getinfo(tow.fff(one) , data) car.getcompany fff " ; 
 
console.log(mySplitStr(str));

的jsfiddle:https://jsfiddle.net/7jazt7y1/7/

+0

但我想以保存弧線之間的空間 – kernal

+0

將嘗試修改它 –

+0

現在這是你想要的方式:) –

0

我無法擺脫尾隨拍攝的組,但我認爲它可以幫助!

這裏是我的解決方案:

var str = " first.getage() person.getinfo(tow.fff(one) , data) car.getcompany fff "; 

// trim to remove spaces at the begining and at the end 
var output = str.trim().split(/[$\s]+(\w+(?:\.\w+)?(?:\((?:[\s\.\w\(\),]*)\))?)\s*/); 

// output = ["first.getage()", "person.getinfo(tow.fff(one) , data)", "car.getcompany", "fff", ""] 
+0

在[$ \ s]是$ char一個錯字?如果不是,你能解釋嗎? –

相關問題