3

Beanshell で単純な switch-case ステートメントを実行しようとしています

これは私が実行しようとしているコードです--

temp = assignee.toString();
switch( temp.toString() ) 
 {
case 'missing' : check = "missing"; break;
case '404' : check = "404"; break;
default: check = "data"; break;
}

しかし、次のエラーが表示されます--

 ERROR - Error during script execution: Sourced file: inline evaluation of: ``temp = assignee.toString(); switch( temp.toString() ) { case 'missing' : check = . . . '' Token Parsing Error: Lexical error at line 3, column 8.  Encountered: "i" (105), after : "\'m"
 org.webharvest.exception.ScriptException: Error during script execution: Sourced file: inline evaluation of: ``temp = assignee.toString(); switch( temp.toString() ) { case 'missing' : check = . . . '' Token Parsing Error: Lexical error at line 3, column 8.  
Encountered: "i" (105), after : "\'m"
at org.webharvest.runtime.scripting.BeanShellScriptEngine.eval(Unknown Source)

ここで何が間違っていますか?このエラーを解決するにはどうすればよいですか?

4

1 に答える 1

2

BeanShell の文字列リテラルは、Java と同様に、単一引用符ではなく二重引用符を使用する必要があります。

bsh % x = '行方不明';
// エラー: 入力の解析エラー: bsh.TokenMgrError: 行 1、列 37 の語彙エラー。検出: "i" (105)、後: "\'m"
bsh % x = "行方不明";
bsh % print(x);
ない
bsh %

一重引用符は文字リテラル用です。複数文字の文字列に単一引用符を使用すると、 のようなエラーが発生します。Encountered: "i" (105), after : "\'m"これは、BeanShell が(文字リテラルを終了するために)の'後に別の引用符を期待していたためですが、代わりに取得されたためです。mi

于 2012-09-01T22:00:48.327 に答える