• ベストアンサー

マルチバイト文字列の部分取得方法は?

bgbgの回答

  • bgbg
  • ベストアンサー率53% (94/175)
回答No.3

use encodingしましょう。 実行時に内部的にUTF-8に変換され、1バイト文字も2バイト文字も1文字として扱えるようになります。 use encoding 'euc-jp'; $s = "12月23日はABCの誕生日"; print substr($s, 0, 14); 結果: 12月23日はABCの誕生日

参考URL:
http://www.pure.ne.jp/~learner/program/Perl_unicode.html#encoding

関連するQ&A

  • マルチバイト文字列(PHP)

    mb_substrで取得した部分文字列がひらがなであるときにtrueを返したいのですが、いい方法が思いつきません 検索文字として、ひらがなすべてを登録してやらなければいけないんでしょうか? 簡単なヒントでもいいので、ご教授願います

    • ベストアンサー
    • PHP
  • 文字列取得 substrではできません。

    1バイト2バイト混在文字列を substrで取得すると、2バイト文字が半分になるため最終文字が文字化けします。 1、2バイト混在文字をうまく取得できる関数はありますか?

    • ベストアンサー
    • PHP
  • soraris10 ksh で文字列をバイト指定し

    soraris10 ksh で文字列をバイト指定して入れ替える 8バイトの文字列の4バイト目と7バイト目を入れ替えたい場合、簡単にできる方法はありますか? 文字列は半角英字のみです。 echo abcdefgh | awk ’{print substr(ゴニョゴニョ) substr(ゴニョゴニョ)}’ で頑張ってやりましたが、美しくなかったので、sedとかでもっと簡単にできないでしょうか。 宜しくお願いいたします。

  • 文字列のバイト数を取得したい

    処理中に渡ってくる文字列のバイト数を取得したいのですが、 そういった関数はありませんでしょうか? 探しても見つかりませんでした。 文字列はUTF-8かSJISで渡ってきますので、両方に 対応していると嬉しいです。 対応していなければ渡ってくる前に文字コードを 変換します。 どなたかご教示下さい。

    • ベストアンサー
    • PHP
  • マルチバイト混在の文字列整形

    OS: Linux Ubuntu 言語: C++ 引数でchar*型の文字列配列(マルチバイト含む)を受け取り 指定した幅で枠つきで文字列を出力したいのですがうまくいきません。 作りたい出力 ━━━━━━━ ┃1: あいうえお┃ ┃2: かきく   ┃ ┃3: abc    ┃ ━━━━━━━ - str[] = {"あいうえお", "かきく", "abc"} - あいうえおの後ろは空白なし - 他は空白と文字列を合計してあいうえおと同じ長さに合うように 私の環境では日本語は3byteと認識され  strlen("あいうえお") = 15 となります。 イメージでは for (i = 0; i < strlen(str[])の最大値; i++) { cout << "┃" << i << ":" << setw(15) << left << str[i] << "┃" } のようなコードになると思うのですが 日本語一文字が出力上は2byte分の幅に見えるのに 認識としては3byteになってしまうので空白が1byte多くなり ━━━━━━━ ┃1: あいうえお┃ ┃2: かきく    ┃ ┃3: abc       ┃ ━━━━━━━ のようにずれてしまいます。 (表記上、最初の枠もずれていますが  現状は足りない分を埋めるsetfillが余計に働いてしまうということです。) 何か対策はありますでしょうか?

  • 全角半角混在の文字列から○文字まで取得する方法

    はじめまして! MySQLから取得した文字列をPHPで例えば10文字まで表示したいのですが、良いやり方ありますでしょうか? 文字列には全角半角が混在しているので substr関数だと、うまく取得できない場合があります。よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 文字数の取得方法(Active Basic 4)

    タイトルのとおりです。 Active Basicを使ってプログラミングをしているのですが、どうしても文字数の取得方法がわかりません。 命令文「Len()」を使えば文字列の「Byte」はわかりますが、文字数が取得できません。 何か良い方法はありますか? (Active Basic 参考プログラム) Dim Str$ As String Str$ = "abc"    '3文字 計3バイト Print Len(Str$)   '「3」が表示されます Str$ = "やほ~"   '3文字 計6バイト Print Len(Str$)   '「6」が表示されます

  • 文字列検索(例えばindex関数)をバイト単位で行いたい

    やりたいことは日本語文字列の処理で、特定の文字を切り抜きたいのですがうまくいきません。 なぜなら、文字列を切り抜くsubstr関数がバイト単位であるのに対し、文字列を検索するindexがバイト単位でおこなわれていないからです。 例: 文字列"12万3456円"から、円だけを取り除きたいとします。 $str = "12万3456円"; $index = index($str,"円"); $newStr = substr($str, 0, $index); indexは7を返すが、substrで0から7番目を切り取っても、バイト単位なのでうまくいきません。 文字列の検索をバイト単位で行う方法を教えてください。 おねがいします。

    • ベストアンサー
    • Perl
  • OSの文字コードを取得

    ココでも、googleでも検索したのですが みつけられなかったので教えてください。 Perlスクリプトを書いているのですが OSの文字コードを取得する方法があれば知りたいです。 具体的には Encode::from_to($aaa, "utf8","euc-jp"); という部分の"euc-jp"を、直で書きたくないのです。 my $os_encode = *****; として、なんとかうまく取得して Encode::from_to($aaa, "utf8",$os_encode); としたいのです。 OSの文字コードを取得する方法があれば教えてください。 よろしくお願いいたします。

  • 目的の文字列を取得するには?

    ×××× 2011年10月6日 ×××××× というような文字列から日付の部分を取り出そうとしています。 if (mb_ereg("([0-9]{4})年([0-9]{2,})月([0-9]{2,})日",$string,$result)){ echo $result; } という方法で取得しようとしているのですが、失敗します。 半角数字と全角の漢字が混在しているような文字列から、目的の部分を取得する にはどうすればいいでしょうか?

    • ベストアンサー
    • PHP