Questions tagged «strings»

“字符串”是通常代表人类可读文本单位的一系列字符。关于此主题的问题涉及程序中字符串的处理,以及各种语言和环境如何定义和操作字符串。

5
为什么%s在连接方面比+好?
我知道我们应该使用%s连接字符串而不是+Python。 我可以执行以下任何一项操作: hello = "hello" world = "world" print hello + " " + world print "%s %s" % (hello, world) print "{} {}".format(hello, world) print ' '.join([hello, world]) 但是我为什么要使用除之外的其他东西+呢?用简单的编写连接更快+。然后,如果你看一下格式化字符串,您指定的类型如%s和%d和这样。据我了解,最好对类型进行明确说明。 但是后来我读到,+即使输入起来更容易,也应避免使用for串联。是否有明确的理由应该以其他方式之一将字符串连接起来?
88 python  strings 


12
SQL:空字串与NULL值
我知道这个话题有点争议,互联网上有很多各种各样的文章/观点。不幸的是,他们中的大多数人都假设该人不知道NULL和空字符串之间的区别是什么。因此,他们通过联接/聚集讲述令人惊讶的结果的故事,并且通常会做一些更高级的SQL课程。这样,他们绝对会遗漏所有要点,因此对我毫无用处。因此,希望这个问题和所有答案将使话题向前发展。 假设我有一个包含个人信息(姓名,出生等)的表,其中的一列是具有varchar类型的电子邮件地址。我们假设由于某些原因,某些人可能不想提供电子邮件地址。将此类数据(不带电子邮件)插入表时,有两个可用的选择:将单元格设置为NULL或将其设置为空字符串('')。让我们假设我知道选择一个解决方案而不是另一个解决方案的所有技术含义,并且可以为任何一种情况创建正确的SQL查询。问题是,即使两个值在技术层面上都不同,但在逻辑层面上却完全相同。看完NULL和”之后,我得出一个结论:我不知道那个人的电子邮件地址。也不管我怎么努力 我无法使用NULL或空字符串发送电子邮件,因此显然大多数SMTP服务器都同意我的逻辑。所以我倾向于在不知道该值的地方使用NULL,并认为空字符串是一件坏事。 经过与同事的激烈讨论,我提出了两个问题: 我是否假设使用空字符串作为未知值会导致数据库对事实“撒谎”,对吗?更准确地说:使用SQL关于什么是价值和什么不是价值的想法,我可能得出结论:我们拥有电子邮件地址,只是发现它不为空。但是后来,当尝试发送电子邮件时,我会得出一个矛盾的结论:不,我们没有电子邮件地址,@!#$数据库一定在撒谎! 是否有逻辑上的情况,其中空字符串”可以很好地承载重要信息(除了值和没有值),而通过其他任何方式(如附加列)进行存储都会很麻烦/效率低下。我见过很多帖子声称有时将空字符串与实数值和NULL一起使用是很好的,但是到目前为止,还没有看到一种合乎逻辑的方案(就SQL / DB设计而言)。 PS有些人会很想回答,这只是个人品味的问题。我不同意 对我来说,这是一个具有重大后果的设计决策。因此,我希望看到一些出于逻辑和/或技术原因而对此表示反对的答案。
72 design  database  sql  strings  null 

3
“字符串”的词源
因此很明显,一串东西是一系列的东西,因此是一系列字符/字节/等。也可以称为字符串。但是谁首先把它们叫做弦?什么时候?并且在什么情况下它停留在周围?我一直想知道这一点。

6
用字符串字面量来初始化char []是不好的做法吗?
我在CodeGuru上读了一个标题为“ strlen vs sizeof”的线程,其中一个答复指出“ char用字符串文字初始化数组仍然是[sic]不好的做法”。 这是真的吗?还是他的观点(尽管是“精英成员”)? 这是原始问题: #include <stdio.h> #include<string.h> main() { char string[] = "october"; strcpy(string, "september"); printf("the size of %s is %d and the length is %d\n\n", string, sizeof(string), strlen(string)); return 0; } 对。大小应为长度加1是? 这是输出 the size of september is 8 and the length is 9 大小一定是10。就像在计算strcpy改变字符串长度之前计算它的sizeof字符串一样。 我的语法有问题吗? …

6
硬编码永远不变的字符串
因此,在我为法语编写一个用于共轭动词的程序(通过算法,而不是通过数据集)的过程中,我遇到了一个小问题。 对于动词的大约17种情况,使动词共轭的算法实际上非常简单,并且针对每种情况在特定模式下运行;因此,这17个类的共轭后缀是静态的,并且(很可能)不会很快改变。例如: // Verbs #1 : (model: "chanter") terminations = { ind_imp: ["ais", "ais", "ait", "ions", "iez", "aient"], ind_pre: ["e", "es", "e", "ons", "ez", "ent"], ind_fut: ["erai", "eras", "era", "erons", "erez", "eront"], participle: ["é", "ant"] }; 这些是法语中最常见的动词类的屈折后缀。 还有其他动词类别(不规则动词),其动词变位也很可能在下一两个世纪保持不变。由于它们是不规则的,因此它们的完整共轭必须静态地包含在内,因为它们不能从某个模式中可靠地进行共轭(据我的统计,也只有32个不规则)。例如: // "être": forms = { ind_imp: ["étais", "étais", "était", "étions", "étiez", "étaient"], …
39 design  strings 


2
为什么C字符串文字是只读的?
字符串文字为只读的优点是(-ies / -ied): 另一种射击自己的方式 char *foo = "bar"; foo[0] = 'd'; /* SEGFAULT */ 无法优雅地初始化一行中的可读写单词数组: char *foo[] = { "bar", "baz", "running out of traditional placeholder names" }; foo[1][2] = 'n'; /* SEGFAULT */ 使语言本身复杂化。 char *foo = "bar"; char var[] = "baz"; some_func(foo); /* VERY DANGEROUS! */ some_func(var); /* …
29 c  memory  strings 


2
为什么在数据库中将标记/枚举存储为字符串而不是整数?
我一直在浏览一些著名CMS的SQL转储,包括Drupal 7,Wordpress(一些非常旧的版本)以及一些基于Python的自定义应用程序。 所有这些转储都包含带有字符串标志而不是整数标志的数据。例如,一个职位的状态表示为published,closed或inherit不是1,2或3。 我在数据库设计方面的经验非常有限,并且从未尝试过使用简单的SQL,但是始终有人告诉我,应该对此类数据使用数字/整数标志。显然tinyint,与例如相比,在数据库中占用的空间要少得多varchar(9)。 那我想念什么呢?这不是浪费数据存储和数据冗余吗?如果这些列使用整数而不是字符串,浏览,搜索和索引编制会不会更快一些?

3
哪种字符串搜索算法实际上是最快的?
我一直被困在最快的字符串搜索算法上一段时间,听到了很多意见,但是最后我不确定。 我听到有人说最快的算法是Boyer-Moore,有人说Knuth-Morris-Pratt实际上更快。 我一直在寻找它们两者的复杂性,但是它们看起来大致相同O(n+m)。我发现在最坏的情况下,博耶·摩尔O(nm)要比具有O(m + 2 * n)的克努斯·莫里斯·普拉特复杂。其中,n =文本长度,m =模式长度。 据我所知,如果我使用加利尔定律,博耶-摩尔的情况将是最糟的。 我的问题,总的来说,这实际上是最快的字符串搜索算法(此问题包括所有可能的字符串算法,而不仅仅是Boyer-Moore和Knuth-Morris-Pratt)。 编辑:由于这个答案 我要寻找的是: 鉴于文本T和图形P我必须找到所有的出场P在T。 P和T的长度也来自[1,2 000 000],程序必须在0.15秒内运行。 我知道KMP和Rabin-Karp足以在该问题上获得100%的分数,但是我想尝试实施Boyer-Moore。哪种模式搜索最合适?

6
如果只使用一次,是否应该定义一个字符串常量?
我们正在为Jaxen(Java的XPath库)实现一个适配器,该适配器允许我们使用XPath来访问应用程序的数据模型。 这是通过实现将字符串(从Jaxen传递给我们的)映射到数据模型的元素的类来完成的。我们估计我们将需要大约100个类,总共超过1000个字符串比较。 我认为,执行此操作的最佳方法是将字符串直接写入代码的简单if / else语句-而不是将每个字符串都定义为常量。例如: public Object getNode(String name) { if ("name".equals(name)) { return contact.getFullName(); } else if ("title".equals(name)) { return contact.getTitle(); } else if ("first_name".equals(name)) { return contact.getFirstName(); } else if ("last_name".equals(name)) { return contact.getLastName(); ... 但是,总是有人告诉我,我们不应该将字符串值直接嵌入代码中,而应该创建字符串常量。看起来像这样: private static final String NAME = "name"; private static final String TITLE …

5
为什么琴弦这么慢?
自从我上高中的第一门编程课开始,我就听说字符串操作比神话中的“平均操作”要慢,也就是成本更高。为什么让它们这么慢?(这个问题是故意留下的。)

7
将某些值存储为字符串是不好的做法吗?
那是一个非常模糊的标题,但我想不出一种更好的措词。但是,作为一个示例,请考虑游戏中角色的前进方向。先使用字符串然后再执行类似操作,这是一种错误if(character.direction == "left")。在我看来,它为愚蠢的错误留了太多的空间,例如不小心使用Left或l或而不是left。我的怀疑正确吗?如果是这样,实现这种目标的首选方式是什么?

4
如何从句子中提取单词并确定每个词是什么?[关闭]
很难说出这里的要求。这个问题是模棱两可,含糊,不完整,过于宽泛或夸张的,不能以当前的形式合理地回答。如需帮助澄清此问题以便可以重新打开, 请访问帮助中心。 6年前关闭。 我想写一些东西,用一个句子,识别其中包含的每个单词,并定义每个单词的词性。 例如 世界您好,我是一个句子 会返回这个 verb noun, pronoun verb adjective noun 理想情况下,我希望最终将其进一步发展并采用一个句子,并以编程方式让它理解它试图解释的内容并可能对此进行处理。 所以我的问题是,有人听说过这样的事情吗?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.