Questions tagged «string-concatenation»

字符串连接是将两个字符串首尾相连的操作。



7
在python中连接字符串和整数
用python说你有 s = "string" i = 0 print s+i 会给你错误,所以你写 print s+str(i) 不会出错。 我认为这是处理int和字符串连接的笨拙方式。甚至Java也不需要显式转换为String来进行这种连接。有没有更好的方法来进行这种串联,即在Python中无需显式转换?

10
Android TextView:“不要连接使用setText显示的文本”
我通过以下方式使用setText()设置文本。 prodNameView.setText("" + name); prodOriginalPriceView.setText("" + String.format(getString(R.string.string_product_rate_with_ruppe_sign), "" + new BigDecimal(price).setScale(2, RoundingMode.UP))); 因为第一个是简单的用法,第二个是使用格式化文本设置文本。 Android Studio非常有趣,我使用了Menu,Analyze -> Code Cleanup并且在上面两行得到了建议。 不要连接使用setText显示的文本。将资源字符串与占位符一起使用。更少...(Ctrl + F1) 调用TextView#setText时: 永远不要调用Number#toString()格式化数字;它不会正确处理分数分隔符和特定于语言环境的数字。考虑改用具有正确格式规范(%d或%f)的String#format。 不要传递字符串文字(例如“ Hello”)来显示文本。硬编码文本无法正确翻译为其他语言。考虑改用Android资源字符串。 不要通过串联文本块来构建消息。此类消息无法正确翻译。 我能为此做什么?任何人都可以帮助解释这是什么,我该怎么办?


8
有什么理由不使用'+'连接两个字符串吗?
Python中常见的反模式是+在循环中使用串联字符串序列。这很不好,因为Python解释器必须为每次迭代创建一个新的字符串对象,并且最终要花费二次时间。(在某些情况下,最新版本的CPython显然可以优化此功能,但其他实现则不能,因此建议程序员不要依赖此功能。)''.join是执行此操作的正确方法。 但是,我听说它说过(包括Stack Overflow上的内容),您永远都不要将它+用于字符串连接,而应该始终使用''.join或格式字符串。我不明白为什么只连接两个字符串会出现这种情况。如果我的理解是正确的,则不应该花费二次时间,而且我认为a + b比''.join((a, b))或更加简洁易读'%s%s' % (a, b)。 +串联两个字符串是否是一种好习惯?还是有我不知道的问题?

12
const char *串联
我需要串联两个这样的const字符: const char *one = "Hello "; const char *two = "World"; 我该怎么做呢? 我char*从具有C接口的第三方库传递了这些,所以我不能简单地使用它们std::string。

9
为什么字符串连接比数组连接快?
今天,我阅读了有关线程串联速度的主题。 令人惊讶的是,字符串连接是赢家: http://jsben.ch/#/OJ3vo 结果与我的想法相反。此外,与此有关的文章很多,都与此相反。 我可以猜测浏览器已针对concat最新版本进行了优化,但是如何做到这一点呢?我们可以说+串联字符串时最好使用吗? 更新资料 因此,在现代浏览器中,对字符串串联进行了优化,因此使用+符号比join要串联字符串时使用符号要快。 但是@Arthur指出,join如果您实际上想使用分隔符连接字符串,则速度会更快。 更新-2020 Chrome:数组join几乎2 times faster是String concat + 参见:https : //stackoverflow.com/a/54970240/984471 注意: join如果有的话,数组更好large strings 如果我们需要several small strings在最终输出中生成,最好使用字符串concat +,否则使用Array会在末尾需要几次Array到String的转换,这会导致性能超载。


3
Java 9中如何实现字符串连接?
如JEP 280:Indify String Concatenation: 更改由String生成的静态-concatenation字节码序列,javac以使用invokedynamic对JDK库函数的调用。这将使将来的String连接优化成为可能,而无需进一步更改所发出的字节码javac。 在这里,我想了解invokedynamic调用的用途是什么,字节码的连接与有何不同invokedynamic?

5
SQL NVARCHAR和VARCHAR限制
所有,我都有一个大型(不可避免的)动态SQL查询。由于选择标准中字段的数量,包含动态SQL的字符串的长度超过4000个字符。现在,我知道为设置了最大4000 NVARCHAR(MAX),但是在Server Profiler中查看了已执行的SQL语句 DELARE @SQL NVARCHAR(MAX); SET @SQL = 'SomeMassiveString > 4000 chars...'; EXEC(@SQL); GO 似乎可以工作(!?),对于另一个也很大的查询,它抛出与此4000极限(!?)相关的错误,基本上在4000极限之后修剪所有SQL,并给我留下语法错误。尽管这样的探查,它表示在这个动态的SQL查询全(!?)。 这里到底发生了什么,我应该将这个@SQL变量转换为VARCHAR并继续进行下去吗? 谢谢你的时间。 附言 能够打印出超过4000个字符以查看这些大查询也将是一件很不错的事情。以下仅限于4000 SELECT CONVERT(XML, @SQL); PRINT(@SQL); 还有其他很酷的方法吗?

9
Python中的字符串串联与字符串替换
在Python中,使用字符串连接与字符串替换的时间和地点使我难以理解。由于字符串连接的性能有了很大提高,这(成为更多)是一种风格上的决定,而不是一种实际的决定吗? 举一个具体的例子,如何处理灵活的URI: DOMAIN = 'http://stackoverflow.com' QUESTIONS = '/questions' def so_question_uri_sub(q_num): return "%s%s/%d" % (DOMAIN, QUESTIONS, q_num) def so_question_uri_cat(q_num): return DOMAIN + QUESTIONS + '/' + str(q_num) 编辑:也有关于加入字符串列表和使用命名替换的建议。这些是中心主题的变体,即在什么时候做正确的方法?感谢您的回复!

3
用Groovy进行字符串连接
在Groovy中串联字符串的最佳(惯用)方法是什么? 选项1: calculateAccountNumber(bank, branch, checkDigit, account) { bank + branch + checkDigit + account } 选项2: calculateAccountNumber(bank, branch, checkDigit, account) { "$bank$branch$checkDigit$account" } 我已经在旧的Groovy网站上找到了有关此主题的有趣观点:您可以做的事情最好不要做。 与Java中一样,您可以将字符串与“ +”符号连接起来。但是Java只需要将“ +”表达式的两个项目之一作为字符串,无论它在首位还是在最后一位。Java将在“ +”表达式的非String对象中使用toString()方法。但是在Groovy中,您应该安全无忧,“ +”表达式的第一项以正确的方式实现plus()方法,因为Groovy会搜索并使用它。在Groovy GDK中,只有Number和String / StringBuffer / Character类具有实现串联字符串的plus()方法。为避免意外,请始终使用GStrings。

4
迭代字符串的时间复杂性实际上是O(n ^ 2)还是O(n)?
我正在处理CTCI之外的问题。 第1章的第三个问题是您采用了诸如 'Mr John Smith ' 并要求您将中介空间替换为%20: 'Mr%20John%20Smith' 作者使用Python提供了此解决方案,称其为O(n): def urlify(string, length): '''function replaces single spaces with %20 and removes trailing spaces''' counter = 0 output = '' for char in string: counter += 1 if counter > length: return output elif char == ' ': output = output + …

9
最佳实践/性能:将StringBuilder.append与String.concat混合
我试图了解什么是最佳实践,以及为什么要在不同情况下串联字符串文字和变量。例如,如果我有这样的代码 StringBuilder sb = new StringBuilder("AAAAAAAAAAAAA") .append(B_String).append("CCCCCCCCCCC").append(D_String) .append("EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE") .append("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"); 这是这样做的方式吗?从这篇文章中,我注意到+Strings的运算符创建了一个StringBuilder的新实例,连接了操作数,并返回了String转换,这似乎比调用还多了很多.append();所以如果这是真的,那是不可能的。但是呢String.concat()?是否适合.append()用于每个串联?或仅用于变量,文字可以追加.concat()吗? StringBuilder sb = new StringBuilder("AAAAAAAAAAAAA") .append(B_String.concat("CCCCCCCCCCC")).append(D_String .concat("EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE") .concat("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF")); 应对这些情况的最佳做法和性能的一般规则是什么?我的假设是正确的,+真的不应该使用吗?

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.