在解决aspx中的问题时,我在从ASP.Net会话变量设置骨干属性时遇到困难。
我想设置一个包含' \ u'的值的属性在两者之间的性格。喜欢
App.prop.set("Username",<%= Session.Name %>)
Session.Name包含&#34; john \ udenver&#34;作为值,当我在javascript中调试调试器并检查它已经正确转义的值为&#34; john \ udenver&#34;
所以Session.Name已经有&#34; john \ udenver&#34;的转义值。
但是当它呈现并尝试将值赋给属性时,它是无意义的\ u并且我得到一个异常说&#34;错误:预期的十六进制数字。&#34;
我试图逃避使用&#34;逃避&#34;方法
App.prop.set("Username", escape ("<%= Session.Name %>"))
但它抛出相同的异常,它呈现为
App.prop.set("Username", escape ("john\udenver"))
我认为在渲染页面时,它会变为&#34; john \ udenver&#34;并抛出异常。
其中一个解决方法是在&lt;%= Session.Name%&gt;之前进行RegEx检查。
App.Prop.set("Username","<%= System.Text.RegularExpressions.Regex.Escape(Session.Name)%>");
但这似乎并不是最干净的方式。 需要帮助在字符串中设置和获取此属性,并在字符串中显示\ u或\ x。你能建议吗。
感谢。
答案 0 :(得分:1)
首先在Unicode转义序列之外使用\x
,或者在规范中不允许在十六进制转义之外使用"john\udenver"
,并导致某些引擎抛出语法错误。因此\u
是JS中的非法字符串,因为很明显引擎在UnicodeEscapeSequence ::
u HexDigit HexDigit HexDigit HexDigitIn
之后查找unicode字符,并且失败将导致语法错误。
Session.Name
所以代替HexDigit,它找到了丹佛。
因此,如果"john\udenver"
值已经App.prop.set("Username",<%= Session.Name.replace(/\\(?=[ux])/g, "\\\\") %>)
,请务必使用另一个类似
select *
from (
select lag(date_)over ( order by date_) as date_before_ko,
date_ as date_after_ko,
floor((date_ - lag(date_) over ( order by date_))*24*60) as minutes_passed
from HISTORY_LOG
)
where minutes_passed > 4