- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在编写一个实用程序,它接受一个 .resx 文件并创建一个包含 .resx 文件中所有名称/值对属性的 javascript 对象。这一切都很好,直到 .resx 中的值之一是
该经销商接受电子订单。
/r/n单击以从该经销商处订购 {0}。
我将名称/值对添加到 js 对象中,如下所示:
streamWriter.Write(string.Format("\n{0} : \"{1}\"", kvp.Key, kvp.Value));
当 kvp.Value = "This dealer accept electronic orders./r/nClick to order {0} from this dealer."
这会导致 StreamWriter.Write() 实际上在“订单”之间放置一个换行符。和“点击”,这自然会搞砸我的 javascript 输出。
我尝试过使用 @ 和不使用 string.Format 的不同方法,但我没有成功。有什么建议吗?
编辑:此应用程序在构建期间运行,以便稍后部署一些 javascript 文件,因此除了应用程序开发人员之外,任何人都无法访问/运行它。因此,虽然我显然需要一种方法来转义此处的字符,但 XSS 本身并不是真正的问题。
最佳答案
当您看到这段代码时,您的问题已经发生了。 String.Format 不会将替换字符串({0}
等)中的文字 \n
和 \r
“扩展”为换行符和 CR,所以它一定是在更早的某个时间点发生的,可能是在读取 .resx 文件时发生的。
您有两种可能的解决方案。其一,正如您在对 DonaldRay 的回答的评论中所发现的那样,是显式地反转此替换,并用两个字符 \n
替换文字换行符:
kvp.Value.Replace("\r", // <-- replaced by the C# compiler with a literal CR character
"\\r"); // <-- "\\" replaced by the C# compiler with a single "\",
// leaving the two-char string "\r"
您需要对可能出现在您的字符串中的每个字符执行相同的操作。\n和\r是最常见的,然后是\t(制表符);对于大多数开发工具来说,这可能就足够了。
string formatted = kvp.Value.Replace("\r", "\\r")
.Replace("\n", "\\n")
.Replace("\t", "\\t");
或者,您可以向上游查看 .resx 文件阅读代码,并尝试查找并删除显式扩展这些字符序列的部分。如果可能的话,这将是一个更好的通用解决方案。
关于c# - 如何使用 StreamWriter 逐字(不转义)写入转义字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2716253/
我正在尝试返回数组“seats”,它本质上应该从文本文件返回数据 - 15x30 网格“#”。我已经尝试了很多东西,但我感到很沮丧,因为我对 java 的经验很少。我的代码可以编译,但在调用该方法时无
对于任何输入的字符串,我们需要按任意顺序的单词匹配来查找 super 字符串。即输入字符串中的所有单词必须以任何顺序出现在输出字符串中。例如给定数据集:“字符串搜索”“Java 字符串搜索”“手动 C
我有一个文本文件,其中包含一些我想放入二维数组中的内容。该文本文件由等长的句子组成。如何将每个单词放入数组? 文本文件的例子是- This is stackoverflow I am user 这个文
我正在编写一个实用程序,它接受一个 .resx 文件并创建一个包含 .resx 文件中所有名称/值对属性的 javascript 对象。这一切都很好,直到 .resx 中的值之一是 该经销商接受电子订
我输入了大量的数学表达式和方程式,我想为每个表达式和方程式打印出 latex 表示形式。到目前为止,我已经尝试过 Sage 和 sympy,但棘手的部分是不对表达式中的术语重新排序。 所以,如果我的输
我正在尝试通过实现异步任务在 android (java) 中流式传输 chatgpt api 的响应(逐字),但我收到错误。我正在将 java 的 HTTPurlconnection 库与输入和输出
我正在尝试通过实现异步任务在 android (java) 中流式传输 chatgpt api 的响应(逐字),但我收到错误。我正在将 java 的 HTTPurlconnection 库与输入和输出
我是一名优秀的程序员,十分优秀!