タグ付けされた質問 「string-concatenation」

文字列連結とは、2つの文字列を端から端まで結合する操作です。



7
Pythonでの文字列と整数の連結
Pythonではあなたが持っていると言います s = "string" i = 0 print s+i あなたにエラーを与えるので、あなたは書く print s+str(i) エラーが発生しないようにします。 これは、intとstringの連結を処理するための非常に不格好な方法だと思います。このような連結を行うために、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))); その1つ目は簡単な使用法で、2つ目は書式設定テキストを使用してテキストを設定する方法です。 Android Studioは非常に興味深いので、Menuを使用Analyze -> Code Cleanupして、上記の2行のような提案を受けました。 表示されたテキストをsetTextで連結しないでください。プレースホルダーでリソース文字列を使用します。少ない...(Ctrl + F1) TextView#setTextを呼び出すとき: Number#toString()を呼び出して数値をフォーマットしないでください。小数区切りとロケール固有の数字は適切に処理されません。代わりに、適切なフォーマット指定(%dまたは%f)でString#formatを使用することを検討してください。 テキストを表示するために文字列リテラル(「Hello」など)を渡さないでください。ハードコードされたテキストは、他の言語に正しく翻訳できません。代わりにAndroidリソース文字列の使用を検討してください。 テキストチャンクを連結してメッセージを作成しないでください。このようなメッセージは適切に翻訳できません。 これのために私は何ができますか?誰もがそれが何で何をすべきかを説明するのを手伝ってくれる?

14
require(“ path”)。joinを使用して安全にURLを連結できますか?
これは、require("path").joinURLを連結するために使用しても安全ですか? require("path").join("http://example.com", "ok"); //returns 'http://example.com/ok' require("path").join("http://example.com/", "ok"); //returns 'http://example.com/ok' そうでない場合、ifsでいっぱいのコードを記述せずにこれを行うにはどのような方法を提案しますか?

8
2つの文字列を連結するために '+'を使用しない理由は何ですか?
Pythonの一般的なアンチパターン+は、ループで使用する文字列のシーケンスを連結することです。Pythonインタプリタは反復ごとに新しい文字列オブジェクトを作成する必要があるため、これは悪い結果となり、結果として2次時間がかかります。(最近のバージョンのCPythonは明らかにこれを最適化できる場合もありますが、他の実装では最適化できないため、プログラマーはこれに依存することをお勧めしません。)これ''.joinが正しい方法です。 ただし、(ここではStack Overflowを含めて)文字列の連結には決して使用すべきではなく、+常に''.joinまたはフォーマット文字列を使用するように言われたと聞きました。2つの文字列のみを連結しているのに、なぜこれが当てはまるのか理解できません。私の理解が正しければ、二次時間は必要ありません。またa + b、''.join((a, b))またはよりも読みやすく、読みやすくなっています'%s%s' % (a, b)。 +2つの文字列を連結するのに使用するのは良い習慣ですか?または、私が気付いていない問題はありますか?

12
const char *連結
次のような2つのconst charを連結する必要があります。 const char *one = "Hello "; const char *two = "World"; どうすればいいですか? char*Cインターフェースを備えたサードパーティのライブラリからこれらのが渡されたため、std::string代わりに単純に使用することはできません。

9
文字列の連結が配列結合よりも速いのはなぜですか?
今日、私はこのスレッドを読んで、文字列連結の速度について読みました。 驚いたことに、文字列の連結が勝者でした。 http://jsben.ch/#/OJ3vo 結果は私が思っていたのとは正反対でした。また、同様に反対の説明このことについて多くの記事があり、これは。 ブラウザはconcat最新バージョンで文字列に最適化されていると思いますが、どうやってそれを行うのですか?+文字列を連結するときに使用する方が良いと言えますか? 更新 使用するのでだから、最近のブラウザで文字列の連結は、最適化されている+兆候が速く使うよりjoinあなたがしたいときCONCATENATE文字列。 しかし、@ Arthurは、文字列をセパレータで結合しjoinたい場合は、それがより速いと指摘しました。 更新-2020 Chrome:配列joinはほぼ2 times faster文字列連結です+ 参照:https : //stackoverflow.com/a/54970240/984471 注として: joinあなたが持っている場合、配列はより良いですlarge strings several small strings最終出力で生成する必要がある場合は、文字列concatを使用することをお勧めします。+そうしないと、配列を使用すると、最後にいくつかの配列から文字列への変換が必要になるため、パフォーマンスが過負荷になります。


3
文字列連結はJava 9でどのように実装されていますか?
JEP 280で記述されているように、文字列連結を示します。 Stringによって生成された静的連結バイトコードシーケンスを変更して、JDKライブラリ関数の呼び出しをjavac使用しinvokedynamicます。これStringにより、によってエミットされたバイトコードをさらに変更することなく、将来の連結の最適化が可能になりますjavac。 ここで、invokedynamic呼び出しの使用方法と、バイトコードの連結がどのように異なるのかを理解したいと思いinvokedynamicます。

5
SQL NVARCHARおよびVARCHARの制限
すべて、私には大きな(避けられない)動的SQLクエリがあります。選択基準のフィールド数が原因で、動的SQLを含む文字列は4000文字を超えています。今、私は4000の最大セットがあることを理解していNVARCHAR(MAX)ますが、ステートメントのサーバープロファイラーで実行されたSQLを見て DELARE @SQL NVARCHAR(MAX); SET @SQL = 'SomeMassiveString > 4000 chars...'; EXEC(@SQL); GO 動作しているようです(!?)。これもまた大きい別のクエリの場合、この4000制限(!?)に関連付けられているエラーがスローされます。基本的に、この4000制限の後のすべてのSQLがトリムされ、構文エラーが残ります。プロファイラーにはこれがありますが、この動的SQLクエリは完全に表示されています(!?)。 ここで正確に何が起こっているのですか、この@SQL変数をVARCHARに変換して続行するだけですか? 御時間ありがとうございます。 PS また、これらの大きなクエリを表示するために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 Webサイトでこのトピックに関する興味深いポイントを見つけました。 Javaと同様に、文字列を「+」記号で連結できます。しかし、Javaは、「+」式の2つの項目のうちの1つが文字列であることだけを必要とします。それが最初にあるか、最後にあるかは関係ありません。Javaは、「+」式の非文字列オブジェクトでtoString()メソッドを使用します。しかし、Groovyでは、「+」式の最初の項目がplus()メソッドを正しい方法で実装するので安全である必要があります。Groovyはそれを検索して使用するからです。Groovy GDKでは、NumberクラスとString / StringBuffer / Characterクラスのみに、文字列を連結するために実装されたplus()メソッドがあります。驚きを避けるために、常にGStringsを使用してください。

4
反復文字列追加の時間計算量は実際にはO(n ^ 2)ですか、それともO(n)ですか?
私はCTCIの問題に取り組んでいます。 第1章の3番目の問題は、次のような文字列を取ることです。 '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")); これらの状況を回避するためのベストプラクティスとパフォーマンスの一般的なルールは何ですか?私の仮定は正しい+ですか、それは本当に使用されるべきではありませんか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.