如何使用C#运行jscript并返回数组中的值?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何使用C#运行jscript并返回数组中的值?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1857字,纯文字阅读大概需要3分钟。
内容图文
![如何使用C#运行jscript并返回数组中的值?](/upload/InfoBanner/zyjiaocheng/784/5f253245d7f84251afc6d36292dfa966.jpg)
好吧,我在javascript中有很多变量,我需要获取值(我从其他页面获取).
最好的方法是什么?
我正在使用Microsoft.Jscript类和你的方法.
我写了以下代码:
static Dictionary<string, string> ParseVariables(string code)
{
string[] variables = code.Split(';');
Dictionary<string, string> variablesValues = new Dictionary<string, string>();
for (int i = 0, len = variables.Length - 1; i < len; i++)
{
string vvar = variables[i];
string varName = Regex.Replace(vvar.Split('=')[0], @"^\s*var\s*", string.Empty).Trim();
var compiler = Compile(vvar);
string varValue = compiler.ToString();
variablesValues.Add(varName, varValue);
}
return variablesValues;
}
static object Compile(string JSource)
{
return Microsoft.JScript.Eval.JScriptEvaluate(JSource, Microsoft.JScript.Vsa.VsaEngine.CreateEngine());
}
这适用于某些情况,例如:
var jscript = "var x = 'foo'; var y = 'baa';";
var output = ParseVariables(jscript);
var val = output["y"]; //baa
var val2 = output["x"]; //foo
但对于这样的情况:
var jscript = "var x = {}; x['foo'] = 'baa'; x['baa'] = 'test';";
var output = ParseVariables(jscript);
var val = output["x['foo']"]; //not works
我是怎么做到的任何帮助表示赞赏!谢谢!
解决方法:
由于您的方法是将JScript源代码拆分为以分号(;)分隔的块,因此只有var和;之间的部分.将使用您的编译方法编译.
如果将JScript源代码更改为var x = {“foo”:“baa”,“baa”:“test”} ;,则编译方法将正常工作,并返回ScriptObject对象.
但是,还有另一个错误 – 在将值插入到生成的Dictionary中之前使用ToString.
试试这个以开始更好的方向:
将Compile方法更改为返回ScriptObject,如下所示:
static ScriptObject Compile(string JSource)
{
return (ScriptObject)Microsoft.JScript.Eval.JScriptEvaluate(JSource, Microsoft.JScript.Vsa.VsaEngine.CreateEngine());
}
然后尝试这个:
var x = Compile("var x = { foo: 'baa', bar: { 'nisse': 'kalle' } };");
var foo = x["foo"];
var bar = (ScriptObject)x["bar"];
var nisse = bar["nisse"];
内容总结
以上是互联网集市为您收集整理的如何使用C#运行jscript并返回数组中的值?全部内容,希望文章能够帮你解决如何使用C#运行jscript并返回数组中的值?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。