• ベストアンサー

文字列のソート

タイトルの通りです。 例えば文字列 "adcb" を "abcd" に変換する方法を探しています。 str = "abcd".split(//).sort.join このように一度配列に置き換えてソートする 上記のコードでも問題なく動いていますが、 もっと簡潔に書ける方法はないのでしょうか? ご指導お願いします。

  • Ruby
  • 回答数2
  • ありがとう数23

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4847/10260)
回答No.2

無いです。

forcewave
質問者

お礼

返信が遅れてしまい申し訳ありません。 無いならばStringクラスを直接書き換えるしかないのですね・・・ 勉強になりました。ありがとうございます。

その他の回答 (1)

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

irb(main):015:0> "adcb".chars.sort.join => "abcd" あんまり変わらないですね。

forcewave
質問者

お礼

返信遅れて申し訳ありません。 charsメソッドは初めてなので勉強になりました。 ありがとうございます。

関連するQ&A

  • STLのlist どのデータでソートするか分からないデータでソートを行うには?

    class data { public: 文字列型* str; //コンストラクタでN個の配列を生成 int N; //文字列の配列の個数 }; list<data> obj; と書いて、objに対して大量にデータを追加した後、その要素をソートするところで困っています。 データを文字列型のデータの配列の特定のオブジェクトを使ってソートするのに、その方法が見つかりません。 リストのデータの一つ目 str[0] = "abc"; str[1] = "def"; リストのデータの二つ目 str[0] = "ghi"; str[1] = "jkl"; というリストのデータがあったときに、str[0]の要素でソートしたいということなのですが........ メンバのint型などについては、operator<をオーバーロードする方法が見つかったのですが........

  • C言語の文字列で

    基本的なことですがよろしくお願いします。 文字列の配列を作る時 文字を個々に配列にする場合配列の大きさを\0を合わせた5にすると思います str[5] = {'a','b','c','d','\0'} 疑問に思ったのは文字列で初期化する場合は\0はコンパイル時に自動で付加と説明を受けましたが、初期化時には配列の大きさは文字列の長さだけで良いのでしょうか? str[4] = "abcd" 解らなければ多く取ればいいよと言われればそれまでですが、for文で回転させる時は'\0'はどうなっちゃうんでしょうか

  • 漢字を含む文字列のソート

    皆さん、教えてください。 perlで漢字を含む文字列(名前)のソートを行おうと思ったのですが、 perlはコードでのソートらしいので、実際には思うような結果が得られませんでした。 厳密にできなくてもかまわないので、ある程度正しいソートの方法を教えて頂けませんでしょうか。 もしくはライブラリなどあれば、教えて頂けませんでしょうか。 以上、よろしくお願いします。

    • ベストアンサー
    • Perl
  • 文字列にある数字を判別するにはどうすればいいでしょうか?

    文字列にある数字を判別するにはどうすればいいでしょうか? 例え:[今年は2010年7月21日です]という文字列有ります。 この文字列の中で数字が6個ありますが、 どのような方法で判別することが可能でしょうか? ActionScript2.0です。 自分の考えては、とりあえず文字列を配列にする必要があると思い、 ary = str.split("");にしました。 その後、forなどを利用して配列を一個ずつ呼び出して、数字か文字かを判別し、数字がいくつあるかを わかりたいですが、、、うまくできません。 是非、よろしくお願いします。

    • ベストアンサー
    • Flash
  • 文字列扱い方

    構造体の中の配列へ文字列を入れる方法がわからなくてこまっています! #include <stdio.h> struct TEST{     char str[32]; }; int main(){     TEST test;     test.str = "test";     return 0; } このように入力するとconst char [5]' から 'char [32]' に変換できません。と出てしまいます。 何か良い方法がありましたらぜひご教授お願いいたします。

  • splitについて教えてください。

    @name=("ひろと","けいた","はやと","りゅうすけ","とらのすけ"); @str=@name; print "@str\n"; @str=join(";",@str); print "<br>@str\n"; @str=split(/;/,@str); print "<br>@str\n"; 上記のような配列を作成したプログラムを実験で作ってみました。(一部抜粋です。htmlで表記されるようにしています。) ブラウザで見てみると、以下のようになりました。 ひろと けいた はやと りゅうすけ とらのすけ ひろと;けいた;はやと;りゅうすけ;とらのすけ 1 その中の3行目の「1」とだけ表示された理由がわかりません。 splitにより、joinで作成された一つの文字列を、 再び「;」で区切って要素数が5つの配列に戻したかったのですが、 なぜか1と返されてしまいました。 splitの使い方を教えていただけないでしょうか。

    • ベストアンサー
    • CGI
  • 文字列の途中から途中までを抽出

    文字列の一部を抽出したいときのプログラムです。 絶対条件は ・文字列はchar*型 ・ある文字で区切られた区間を抽出 です。 以下のコードだとstrncpyの部分でsegmantation faultになってしまいます。 -------------------------- char array[10] = "abcd/efgh"; char* str0 char* str1; char* str2; int = len; str0 = array; len = strstr(str0, "/") - str0; strncpy(str1, str0, len); str2 = array + len + 1; -------------------------- 各変数が str1 = abcd str2 = fghi となるようにしたいです。 char str1[10];などにすればいいのですが、それ以外の方法でお願いします。

  • join関数で文字列を''で括りたい

    いつもお世話になっております。 SQLのQueryを生成するため、 配列をjoinしようと思ってます。 joinの値は文字列なので、シングルクオーテーションで括りたいと考えてるのですが、 うまい方法を探しております。 ご存知なら御教授いただきたいです。 今はjoinの配列にデータを入れる際にシングルクオーテーションを文字列結合しております。

    • 締切済み
    • PHP
  • 文字列の整列

    文字列操作に関して、質問があります。 (簡単ですみません) 複数の配列の文字列を、縦にならべて、 出力する時に、(各カテゴリーを横に並べます) 横のズレをなくしたいと思っています。 文字列の長さが決まっていないので、長さによって 縦の並びが、ずれてしまいます。 その上、配列には何も入っていないケースがあります。 > str1     str2     str3     str4     str5 > aa2     aasd3     aa3         aaf6 > ssssddd4    a1     ddaa4     ff     ffgg > as        dd      ffddss このように縦にきれいに並ぶのが、理想です。 何か良い方法はないですか? よろしくお願いいします。

    • ベストアンサー
    • Perl
  • Javascriptでの正しい文字置換方法

    Javascriptのサンプルなどで置換処理は A→Bの置換を行う場合 文字列をAで配列に分割してそれをB区切りに連結するという方法を使っているのを見かけるのですが納得いきません。 Perlで書いた場合、こんな感じの処理ですね。 $str = join("B",split(/A/, $str)); もう少し正直に $str =~ s/A/B/g; に該当するような正しい記述は無いものでしょうか?

専門家に質問してみよう