我正在优化Java代码,但是在Nashorn上运行并且没有自己的调试选项。输入为val = "JPG ou PNG"
,输出为"JPG ou PNG"
。为什么会这样?我需要输出为"jpg/png"
功能
function process(val) {
var cleaned = val.replaceAll("[•×\\tª°▪º⊗ fi ²●˚~ĩ`ũ]", "").trim().toLowerCase();
var out = [];
if (cleaned.contains("ou")) {
out = cleaned.split("ou");
}
else if (cleaned.contains("/")) {
out = cleaned.split("/");
}
else {
return cleaned;
}
for (var i = 0; i < out.length; i++) {
out[i] = out[i].trim();
}
return join(out, "/");
}
答案 0 :(得分:1)
您的三项功能在javascript中不存在:
replaceAll(searchValue, newValue)
为replace(searchValue, newValue)
contains(searchValue)
为indexOf(searchValue) > -1
join(array, separator)
为array.join(separator)
<强> JSFIDDLE DEMO 强>
答案 1 :(得分:1)
这是我的解决方案:
function process(val) {
var cleaned = val.replace("[•×\\tª°▪º⊗ fi ²●˚~ĩ`ũ]", "").trim().toLowerCase();
var out = [];
if (cleaned.indexOf("ou") >= 0) {
out = cleaned.split("ou");
}
else if (cleaned.indexOf("/") >= 0) {
out = cleaned.split("/");
}
else {
return cleaned;
}
for (var i = 0; i < out.length; i++) {
out[i] = out[i].trim();
}
return join(out, "/");
}
你的逻辑是正确的,但是Javascript中的字符串没有“替换所有”&#39;并且&#39;包含&#39;,因此我将其替换为&#39;替换&#39;和&#39; indexOf(x)&gt; = 0&#39;。
另外,您提到您没有选择在您的环境中进行调试,但您提供的功能非常独立。这意味着您可以轻松地将其复制到另一个环境中以单独测试它。
例如,我能够将此代码包装在HTML文件中,然后在我的Web浏览器中打开它(我必须实现自己的&#39;加入&#39;)。
<html>
<body>
<script>
function join(val, divider) {
var out = "";
for(var i = 0; i < val.length; i++) {
if(out.length > 0) out += divider;
out += val[i];
}
return out;
}
function process(val) {
var cleaned = val.replace("[•×\\tª°▪º⊗ fi ²●˚~ĩ`ũ]", "").trim().toLowerCase();
var out = [];
if (cleaned.indexOf("ou") >= 0) {
out = cleaned.split("ou");
}
else if (cleaned.indexOf("/") >= 0) {
out = cleaned.split("/");
}
else {
return cleaned;
}
for (var i = 0; i < out.length; i++) {
out[i] = out[i].trim();
}
return join(out, "/");
}
var inval = "JPG ou PNG";
var outval = process(inval);
console.log(inval + " => " + outval);
</script>
</body>
</html>
我通过打开控制台并看到输出&#34; JPG ou PNG =&gt;验证了它的工作原理。 JPG / PNG&#34;