我正在尝试编写一种算法来替换import org.openqa.selenium.WebDriver;
import org.openqa.selenium.phantomjs.PhantomJSDriver;
public class test {
public static void main(String[] args) {
// TODO Auto-generated method stub
WebDriver[] drivers = new WebDriver[5];
try{
for (int i = 0; i < drivers.length; i++){
drivers[i] = new PhantomJSDriver();
}
System.out.println("End the program now");
drivers[0].get("http://www.bbc.co.uk");
} finally {
for (int i = 0; i < drivers.length; i++){
WebDriver driver = drivers[i];
driver.close();
driver.quit();
driver = null;
}
}
}
}
,&
,<
,>
,,
'
等字符与他们的HTML实体对应(即"
将替换为&
。这要求我在字符串中放置一个分号,这会产生错误,因为Javascript认为我已经结束了这一行。是我的代码:
&
我以为我可以这样取消它:
str.charAt(i) = '&';
但这会产生错误。
答案 0 :(得分:4)
问题是您的作业无效。你似乎试图改变一个字符串,这在JS中是不可能的,因为字符串是不可变的。
相反,您需要创建一个新字符串,其中包含您要用新内容替换的部分。
var new_str = s.replace(/(?:(&)|(<)|(>)|(')|("))/g, function(s, g1,g2,g3,g4,g5) {
if (g1) return "&"
if (g2) return "<"
if (g3) return ">"
if (g4) return "'"
if (g5) return """
});
答案 1 :(得分:3)
字符串文字中的半冒号不会终止JavaScript中的语句。
ReferenceError:赋值中的左侧无效
您的问题是您正在尝试为函数的返回值赋值,这是不允许的。
如果要替换字符串中的字符,请使用replace
方法。
在这种情况下,您尝试将一串文本转换为HTML字符串,让DOM为您执行此操作更简单:
var div_node = document.createElement('div');
var text_node = document.createTextNode(str);
div_node.appendChild(text_node);
var str_html = div_node.innerHTML;
请注意,这不会替换所有字符。有些人不需要一直逃脱。
答案 2 :(得分:2)
你不需要在字符串内转义分号。 JavaScript并不认为该行以字符串形式结束,而不是认为该行在for (var i = 0; ...)
内结束。
答案 3 :(得分:2)
问题不是逃避问题。您尝试将值分配给String.charAt()
方法的静态输出,这是不允许的。
相反,请尝试使用字符串替换方法将HTML实体替换为替代值。
s = 'Hello & World';
s.replace(/\&/g, '&');
答案 4 :(得分:2)
您可以使用函数通过HTML实体替换字符:
function htmlEntities(str) {
return String(str)
.replace(/&/g, '&')
.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/"/g, '"')
.replace(/'/g, ''');
}
;
不需要替换。