当前位置:  开发笔记 > 编程语言 > 正文

Java - String.replace()的意外行为

如何解决《Java-String.replace()的意外行为》经验,为你挑选了1个好方法。

我正在实现我自己的脚本语言作为副项目,并且语言变量由$ [变量名]访问.但是,当我使用String.replace()用myvar的值(例如'My variable')替换(例如)$ myvar时,使用以下代码:

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

到底是怎么回事?



1> rgettman..:

(原始)给定代码不编译:

Main.java:7: non-static method replaceVars(java.lang.String) cannot be referenced from a static context
    System.out.println(replaceVars("$myvar"));
                       ^

......除非replaceVars宣布static.然后它按预期工作.


@ 0A0D替换可以使用CharSequences:http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#replace%28java.lang.CharSequence,%20java.lang.CharSequence%29
推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有