问题标签 [string-literals]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2718 浏览

android - 字符串引用不应该适用于 AndroidManifest 中意图过滤器的操作名称吗?

最初我的 AndroidManifest.xml 包含一个我通过其自定义操作名称访问的活动。

有了这个清单startActivity(new Intent("com.company.project.TestActivity"));,我的活动就开始了,没有任何问题。

但我对这种编码风格并不满意。早些时候,我被告知不要使用内联定义的字符串常量,因为它会导致代码的可维护性降低。这确实一个重点。

所以首先我ublic static final String MY_ACTION = "com.company.project.TestActivity";在我的 App.java 类(我使用的那个)中声明了 ap 并通过这个命名常量以这种方式到达我的组件:

startActivity(new Intent(App.MY_ACTION));

这似乎好多了,但我仍然必须维护同一字符串的两个实例。在http://developer.android.com/reference/android/R.styleable.html#AndroidManifestAction_name阅读

...这也可能是对包含值的资源(形式为“@[package:]type:name”)或主题属性(形式为“?[package:][type:]name”)的引用这种类型的。

所以我猜想将这个字符串定义为JUST ONCE会很好。我输入<string name="MY_ACTION">com.company.project.TestActivity</string>了我的 strings.xml 并修改了我的应用程序:

一切都还好

...直到我将 AndroidManifest.xml 更改为使用 <action android:name="@string/MY_ACTION" />而不是<action android:name="com.company.project.TestActivity" />. 在这个改变给我最大的惊喜之后,应用程序在运行时崩溃了,抱怨没有找到符合我意图的 Activity。字符串引用可能未正确解析。:(

也许问题是 R.string 依赖于配置......?但是,嘿,我不能这么疯狂地选择这样一个字符串引用,它的值可能会从一个配置变为另一个配置!developer.android.com 告诉我可以在动作名称中使用引用!我在 API 级别 6、7、8 结束时遇到了这种行为。这只是 android 系统中的一个简单错误吗?还是我误解了什么?

我完全困惑,请帮助我。提前致谢。

0 投票
6 回答
288 浏览

c++ - c++ 如何正确预定义 char* 数组?

我是这样做的:

但我注意到它已被弃用。什么是更好的方法?

0 投票
4 回答
20910 浏览

c# - 如何自动转义路径

我有一个路径字符串c:\user\test\test.jpg,我该怎么做c:\\user\\test\\test.jpg

0 投票
1 回答
296 浏览

django - 让 Django 忽略字符串文字

更新 2:问题根本不是 Django 问题 - Python 在到达 Django 之前肯定会删除字符。解决方法是将字符串定义为原始的

更新:事实证明,这是一个比我乍一看更深的问题 - 问题是 python 在字符串文字到达 django 之前正在替换它们。如果我找到解决方案,我会做更多的调查和更新。

我正在使用 django 使用 LaTeX 模板来生成报告,并且在 Django 替换部分字符串的方式上遇到了很多问题。

具体来说,我遇到了两个问题,我尝试插入一个包含乳胶代码的变量。

第一个是它会用它们的 HTML 代码替换 HTML 字符,例如小于符号,这对于 LaTeX 解释器来说当然是胡言乱语。我通过将上下文设置为从不自动转义来解决此问题,如下所示:

但是,我还有第二个问题,即 Django 将字符串文字替换为相应的字符,因此双反斜杠变为 \,而 \b 变为退格。我怎样才能强制 Django 将这些字符留在原处,所以

当我使用时不会被破坏

在 django 模板中引用它?

0 投票
1 回答
1681 浏览

c# - 字符串文字识别问题

我试图通过读取每个符号的字符串来识别字符串文字我的扫描仪骨架示例:

我的目标是解析类似帕斯卡的字符串:“{所有封闭的东西,但是”,允许“”}”。

0 投票
7 回答
219103 浏览

c++ - 字符串文字中的符号 \0 是什么意思?

考虑以下代码:

str 数组的长度是多少,它以多少 0 结尾?

0 投票
4 回答
9630 浏览

c - C -> sizeof 字符串始终为 8

为什么总是返回8???

0 投票
4 回答
260 浏览

c - 这些声明之间的技术区别是什么?

0 投票
2 回答
1248 浏览

java - 字符串驻留的搜索成本和文字字符串的声明

两个问题。

  1. 当我们声明字面量字符串时,我们会在堆的字符串池中查找是否有相同的字符串。这也是实习(方法实习生String)吗?

  2. 在我看来,每个文字字符串声明都需要二进制搜索或其他东西,因此当n是池中现有字符串的数量时,它至少花费log(n) 。如果池中有很多字符串,则可能成本很高。(也许是搜索成本和内存的权衡?)从这个角度来看,声明 mant 文字字符串可能很危险。 这种搜索成本有多重要以及为什么以这种方式设计java(声明文字字符串时搜索池)。

以下是我所说的了解背景。


该类JavaDocjava.lang.String指出:

字符串是常量;它们的值在创建后无法更改。字符串缓冲区支持可变字符串。因为 String 对象是不可变的,所以它们可以被共享。

http://www.janeg.ca/scjp/lang/strLiteral.html评论:

换句话说,因为编译器知道字符串的原始值一旦创建就不能更改,它可以安全地使用现有数据并避免重复项使内存混乱。

0 投票
2 回答
368 浏览

python - python 正则表达式中的特殊字符问题

我在 xml 文件上应用了一些正则表达式来查找和替换值。通常它可以工作。(我听到声音说“使用 xml 解析器”。同时我不能。)但是如果值中有一个特殊字符,它会破坏一切。

认为我有一个如下的 xml 文件:

如果我尝试替换 " <idle2><value>" 节点中的值," <idle1><value>" 节点的值将变为 "something\n"。在写入文件时,xml 变为:

好吧,在搜索和替换中我都使用“r”字符串文字。但它似乎不起作用。我解决问题。对于每次搜索和替换,我将“\n”替换为“ \\n”,然后将结果写入文件。但这不是一种有效的使用方式。

有什么我看不到的吗?我只想将“ \\n”写入文件。这是我想要的这么多吗?

编辑:这是我的正则表达式:

搜索:

替换:

这是用于搜索的 python 代码:

这是为了替换