-1

私はサイド プロジェクトとして独自のスクリプト言語を実装しており、言語変数では $[変数名] によってアクセスされます。ただし、String.replace() を使用して (たとえば) $myvar を myvar の値 (たとえば、「My variable」) に置き換える場合、次のコードを使用します。

public static void main(String[] args)  
{  
    System.out.println(replaceVars("$myvar"));  
}  

public static String replaceVars(String source)  
{  
    String[][] varNames = new String[][]{new String[]{"myvar", "This is a variable"}, new String[]{"anothervar", "This is another variable"}, new String[]{"yetanothervar", "This is yet another variable"}};  
    String result = source;  
    for(String[] s : varNames) result = result.replace("$" + s[0], s[1]);  
    return result;  
}  

出力: $myvar

何が起こっている?

4

3 に答える 3

0

いくつかのコメントが言うように:私にとってはうまくいきます。

ただし、あなたが求めていないのは、実装に関するサイド プロジェクトへのアドバイスです。「$myVar $myVars $myVarIsALongVariableName」を処理してみてください。おそらく、正しく処理し、適切なトークン化などを行いたいと思うでしょう。

IMHOこれは、別のレベルでは、予期しない動作です。根本的な問題の解決策として、他の回答を使用してください。また、このクラスを正確に実行していることと、適切にコンパイルされていることを再確認してください。

System.out.println(replaceVars("edited: $myvar"));  
于 2013-05-28T20:39:51.073 に答える