尝试用值替换字符串的一部分时,我得到了System.FormatException

问题描述 投票:0回答:2

我有一个javascript文件,它包含下面的js脚本

(function() {
    try {
        var click = new MouseEvent('click', {bubbles: true, cancelable: true, view: window});
        var field = document.querySelector('input[type="email"]');
        setTimeout(function() {
            field.dispatchEvent(click);
            field.focus();
            field.value="{0}";
        }, 500);
        return true;
    } catch(err) {
        return false; 
    }
})();

我使用下面的代码读取它作为字符串:

var path = Path.GetDirectoryName(AppDomain.CurrentDomain.BaseDirectory) + "\\Resources\\script\\myjavascript.js";
var raw = File.ReadAllText(path);
var args = new object[] { "my_username" };
Console.WriteLine(raw, args);

我收到错误:抛出异常:mscorlib.dll中的'System.FormatException'

当我尝试用“my_username”替换{0}时。有谁能够帮我?

谢谢。

基于PepitoSh方法的答案如下:

var path = Path.GetDirectoryName(AppDomain.CurrentDomain.BaseDirectory) + "\\Resources\\script\\myjavascript.js";
var raw = File.ReadAllText(path);
var script = raw.Replace("{0}", "my_username");
Console.WriteLine(script);
c# .net wpf
2个回答
2
投票

确实你必须逃避不属于格式化的花括号,我建议在这种特殊情况下采用另一种方法:

var path = Path.GetDirectoryName(AppDomain.CurrentDomain.BaseDirectory) + "\\Resources\\script\\myjavascript.js";
var raw = File.ReadAllText(path);
raw = raw.Replace("{0}", "my_username");
Console.WriteLine(raw);

3
投票

你必须逃脱所有其他{},只留下"{0}"string.format工作。

另外,我会添加一个带有所有变量属性的js对象,并将其用作js脚本中的参数或全局对象,因此我只需要为多个脚本替换一次值。

© www.soinside.com 2019 - 2024. All rights reserved.