タグ付けされた質問 「strings」

「文字列」は、通常人間が読めるテキストの単位を表す一連の文字です。このトピックに関する質問は、プログラムでの文字列の処理、およびさまざまな言語と環境が文字列を定義および操作する方法を扱います。

5
連結に対して+が%sよりも優れているのはなぜですか?
Python %sではなく、文字列の連結に使用する必要があることを理解しています+。 私は次のことができます: hello = "hello" world = "world" print hello + " " + world print "%s %s" % (hello, world) print "{} {}".format(hello, world) print ' '.join([hello, world]) しかし、なぜ私は以外のものを使用する必要があり+ますか?単純なを使用して連結を記述する方が簡単+です。次に、フォーマット文字列を見る場合%s、%dandなどのタイプを指定します。型について明示する方が良いかもしれないことを理解しています。 しかし、それから私は、+連結のために使用することは、入力するのが簡単であっても避けるべきだと読みました。文字列を他の方法のいずれかで連結する必要があるという明確な理由はありますか?
88 python  strings 

11
Javaで文字列が不変なのはなぜですか?
その理由を理解できませんでした。私は常に他の開発者のようにStringクラスを使用しますが、その値を変更すると、Stringの新しいインスタンスが作成されます。 JavaのStringクラスの不変性の理由は何ですか? StringBufferやStringBuilderのような代替手段があることを知っています。それは単なる好奇心です。

12
SQL:空の文字列とNULL値
私はこの主題が少し物議を醸すことを知っています、そして、インターネットの周りに浮かんでいる多くの様々な記事/意見があります。残念ながら、それらのほとんどは、その人がNULLと空の文字列の違いを知らないことを前提としています。そのため、結合/集計を使用した驚くべき結果についてのストーリーを伝え、一般にもう少し高度なSQLレッスンを行います。これを行うことで、彼らは絶対に全体のポイントを見逃し、したがって私にとって役に立たない。したがって、この質問とすべての回答が主題を少し前進させることを願っています。 個人情報(名前、生年月日など)を含むテーブルがあり、列の1つがvarchar型の電子メールアドレスであるとします。何らかの理由で、一部の人々は電子メールアドレスを提供したくないかもしれません。このようなデータ(電子メールなし)をテーブルに挿入する場合、2つの選択肢があります。セルをNULLに設定するか、空の文字列( '')に設定します。あるソリューションを別のソリューションよりも選択することの技術的な影響をすべて把握しており、どちらのシナリオでも正しいSQLクエリを作成できると仮定します。問題は、両方の値が技術レベルで異なっていても、論理レベルでまったく同じであることです。NULLと ''を見た後、私はただ一つの結論に達しました:その男のメールアドレスがわかりません。どんなに頑張っても NULLまたは空の文字列を使用して電子メールを送信できなかったため、明らかにほとんどのSMTPサーバーは私のロジックに同意します。そのため、値がわからない場合はNULLを使用する傾向があり、空の文字列は悪いことだと考えます。 同僚との激しい議論の後、2つの質問がありました。 不明な値に空の文字列を使用すると、データベースが事実について「嘘をつく」ことになりますか?もっと正確に言うと、何が価値で何がそうでないのかというSQLの考えを使用して、結論が出るかもしれません。しかし、その後、電子メールを送信しようとすると、矛盾した結論に達します。いいえ、電子メールアドレスがないため、@!#$データベースは嘘をついているはずです。 空の文字列 ''が重要な情報(値と値なし以外)の非常に優れたキャリアになる可能性のある論理的なシナリオはありますか?空の文字列を実際の値やNULLと一緒に使用するのが良い場合があると主張する多くの投稿を見てきましたが、これまでのところ(SQL / DB設計の観点から)論理的なシナリオは見ていません。 PS一部の人々は、個人的な好みの問題であると答えたいと思うでしょう。私は同意しません。私にとって、それは重要な結果を伴う設計上の決定です。だから、これについての意見がいくつかの論理的および/または技術的理由によって裏付けられている答えを見てみたい。
72 design  database  sql  strings  null 

3
「ストリング」の語源
したがって、一連のことは一連のことであり、文字/バイトなどの連続であることは明らかです。文字列と呼ばれることもあります。しかし、誰が最初に文字列と呼んだのでしょうか?そしていつ?そして、どのような文脈でそれが立ち往生しましたか?私はいつもこれについて疑問に思っていました。

6
文字列リテラルでchar []を初期化するのは悪い習慣ですか?
私はCodeGuruで「strlen vs sizeof」というタイトルのスレッドを読んでいましたが、回答の1つは「とにかく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を計算し、その後に長さを計算するようなものです。 私の構文に何か問題がありますか? ここで回答は: とにかく、文字列リテラルでchar配列を初期化するのは悪い習慣です。したがって、常に次のいずれかを実行してください。 …

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"] }; これらは、フランス語の最も一般的な動詞クラスの接尾辞です。 他のクラスの動詞(不規則)がありますが、その活用も次の1世紀または2世紀の間は変化しないでしょう。これらは不規則であるため、パターンから確実に共役できないため、完全な共役を静的に含める必要があります(32の不規則もあります)。例えば: // "être": forms = { ind_imp: ["étais", "étais", "était", "étions", "étiez", "étaient"], …
39 design  strings 

1
C ++ 11にはstd :: stoiが含まれていますが、std :: itosはどうですか?
C ++ 11にはstd::sto@文字列からints / floats / longsを簡単にアンパックするための関数ファミリーがあることに気がつきました。しかし、その反対が実装されていないことに驚いています。なぜ標準化委員会には、std::itosints / floats / whatever(back)から文字列に戻るための関数ファミリーが含まれていないのですか?
37 c++  parsing  strings  c++11 

2
C文字列リテラルが読み取り専用なのはなぜですか?
文字列リテラルが読み取り専用であることの利点は、以下を正当化(-ies / -ied)します: 足で自分を撃つ別の方法 char *foo = "bar"; foo[0] = 'd'; /* SEGFAULT */ 1行で単語の読み書き配列をエレガントに初期化できない: 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
なぜフラグ/列挙型を整数ではなく文字列としてデータベースに保存するのですか?
Drupal 7、Wordpress(非常に古いバージョン)、Pythonベースのカスタムアプリケーションなど、いくつかの有名なCMSのSQLダンプを参照しています。 これらのすべてのダンプには、整数の代わりに文字列フラグを持つデータが含まれていました。例えば、ポストの状態は次のように表現されたpublished、closedまたはinheritよりむしろ1、2または3。 データベースの設計の経験はかなり限られており、単純なSQLを使用したことは一度もありませんが、このようなデータには数値/整数フラグを使用する必要があることを常に教えられました。tinyintたとえば、データベース内で消費するスペースがの場合よりもはるかに少ないことは明らかですvarchar(9)。 だから私は何が欠けていますか?これはデータストレージとデータの冗長性の浪費ではありませんか?これらの列が文字列ではなく整数を使用している場合、ブラウジング、検索、およびインデックス作成が少し速くなりませんか?

3
どの文字列検索アルゴリズムが実際に最速ですか?
私は、これが最速の文字列検索アルゴリズムであり、多くの意見を聞いてきましたが、最終的にはわかりません。 最速のアルゴリズムはボイヤー・ムーアであると言う人もいれば、Knuth-Morris-Prattが実際に速いと言う人もいます。 私はそれらの両方の複雑さを調べましたが、それらはほとんど同じに見えますO(n+m)。最悪の場合、ボイヤー・ムーアO(nm)はO(m + 2 * n)を持つクヌース・モリス・プラットに比べて複雑であることがわかりました。ここで、nはテキストの長さ、mはパターンの長さです。 私が知る限り、ボイル・ムーアはガリル規則を使用する場合、線形最悪のケースタイムを持ちます。 私の質問、実際には最速の文字列検索アルゴリズムです(この質問には、ボイヤー・ムーアとクヌース・モリス・プラットだけでなく、考えられるすべてのスティングアルゴリズムが含まれています)。 編集:この答えのため 私がまさに探しているのは: テキストを考えるTと、パターンPIは、すべての外見見つけなければならないPでをT。 また、PとTの長さはfromで[1,2 000 000]あり、プログラムは0.15秒未満で実行する必要があります。 KMPとRabin-Karpは問題について100%のスコアを得るのに十分であることは知っていますが、ボイヤー・ムーアを試して実装したいと思っていました。このタイプのパターン検索に最適なのはどれですか?

6
一度だけ使用する場合、文字列定数を定義する必要がありますか?
Xaxを使用してアプリケーションのデータモデルにアクセスできるようにするJaxen(JavaのXPathライブラリ)のアダプターを実装しています。 これは、文字列(Jaxenから渡された)をデータモデルの要素にマップするクラスを実装することによって行われます。合計で1000以上の文字列比較を行う約100のクラスが必要になると推定されます。 これを行う最良の方法は、各文字列を定数として定義するのではなく、コードに直接書き込まれた文字列を使用した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年前に閉鎖されました。 私は文を取り、それに含まれる各単語を識別し、各単語が品詞のどの部分であるかを定義する何かを書きたいです。 例えば Hello World、私は文です これを返します verb noun, pronoun verb adjective noun 理想的には、最終的にそれをさらに一歩進めて文を取り、プログラムでそれが解釈しようとしていることを理解し、おそらくそれについて何かをしたいと思います。 だから私の質問は、誰かがこのようなことを聞​​いたことがありますか?

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