我有以下字符串<=10 & <20
,我想拆分這個字符串,因此它給出了以下結果('<=' '10' '<' '20')
&是不相關的,因爲我在不同的區域處理該字符串我的代碼!謝謝我想分割一個字符串,但我想保留分隔符
回答
你可以使用正則表達式。
"<=10 & <20".match(/(([<=>]+)|(\d+))/g)
返回正是你需要的:
["<=", "10", "<", "20"]
當然最後的正則表達式取決於從什麼是可能的運營商你的字符串可以有
,如果您還需要支持你的問題可能的例子對於負值,您可以將表達式更改爲:
"<=10 & <-20".match(/(([<=>]+)|(-?\d+))/g)
,結果如下:
["<=", "10", "<", "-20"]
這是你想要做的嗎?
var str;
str = '<=10';
str.match(/([^0-9]+)([0-9]+)/); // ["<=10", "<=", "10"]
str = '<20';
str.match(/([^0-9]+)([0-9]+)/); // ["<20", "<", "20"]
這應該做你在做什麼(可確保>=
<=
>
<
正確的語法)後:
"<=10 & <20".match(/(<|>)=?|(\d+)/g);//["<=", "10", "<", "20"]
好像你wan't來標記像編譯字符串做。如果你已經參加過計算機科學課程,你應該知道Lexical Analysis。總之,你需要一個狀態機來靈活地標記字符串。我沒有看到解決這一要求的另一種方式。
就在算法的一瞥:
var tokens = new Array();
var inputStr ...;
... a lot of state variables
var currentState = LexicalAnalysisStates.START;
for (var i = 0; i < inputStr.length; i++) {
var nextChar = input.charAt(i);
switch (currentState) {
case LexicalAnalysisStates.START: ...; // process nextChar considering START state
case LexicalAnalysisStates.DIGIT: ...; // process nextChar considering DIGIT state
case LexicalAnalysisStates.EQUAL: ...; // process nextChar considering EQUAL state
}
}
... here you should have your token collection populated
提示:通過繪製的最終狀態機的草圖,像this one
編輯開始:更新的代碼JavaScript語法阿爾喬姆的評論之後。然後
這個答案是否真的相關/必需? – SmokeyPHP
爲什麼不能?一個簡單的正則表達式不會幫助OP,如果我對他的需求的假設是有效的,她的分裂需求變得更加複雜... – samuelgrigolato
@samuelgrigolato雖然你的答案對Java有價值,但標籤爲「javascript」的問題 – Artem
- 1. 分割一個字符串,但保留我分裂的元素
- 2. 分割字符串,但保留分隔符拆分
- 3. 分割字符串後保留多個分隔符?
- 4. 我試圖分裂/爆炸/使preg_split一個字符串,但我想保持的分隔符
- 5. 如何分割一個字符串,並得到我想在C + +?
- 6. 分割字符串時保留分隔符
- 7. 用重複模式分割字符串,保留分隔符
- 8. 如何在Java中分割字符串並保留分隔符?
- 9. 分割字符串時保留分隔符
- 10. 我想將一個字符串劃分爲一些字符串
- 11. 使用多個分隔符高效地分割一個字符串並保留每個分隔符?
- 12. 分割字符串,但保持分隔符
- 13. 將字符串分割保持一定的分隔符,但除去另一個
- 14. 分割一個字符串(以前的代碼),我想分開int和字符串的|字符串包含
- 15. 分割分隔字符串
- 16. Java多重分割 - 保留分隔符
- 17. C#拆分字符串但保留分隔符
- 18. 用unicode分隔符分割字符串?
- 19. 由分隔符分割字符串
- 20. 按分隔符分割字符串
- 21. 分割字符串分隔符
- 22. PHP字符串分割由分隔符
- 23. Haskell - 按分隔符分割字符串
- 24. 按分隔符分割大字符串
- 25. 分割字符串由分隔符
- 26. 我想分解太長的字符串
- 27. 分割字符串,保留數
- 28. 分割字符串 - 保留左邊
- 29. 如何用我自己的分隔符分割字符串
- 30. 當我不想要它時,fgets分割輸入字符串
結果放入數組櫃面你想知道爲什麼我試圖做到這一點 –
正則表達式是解決 – karaxuna
的&是無關緊要的,我只是想分割字符串,但能夠保持我的分隔符 –