次の文字列が<=10 & <20
あり、この文字列を分割して次の結果が得られるようにしたい('<=' '10' '<' '20')
& コードの別の領域でそれを処理するため、 & は無関係です! ありがとう
質問する
79 次
4 に答える
1
コンパイラのように文字列をトークン化したくないようです。すでにコンピューター サイエンスのクラスを受講している場合は、字句解析の知識が必要です。つまり、柔軟な方法で文字列をトークン化するにはステート マシンが必要です。この要件を解決する別の方法はありません。
アルゴリズムのほんの一部:
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
ヒント:このような最終的なステート マシンのスケッチを描くことから始めます。
編集: Artem のコメントの後に、コードを Javascript 構文に更新しました。
于 2013-08-16T13:13:29.890 に答える