Ruby で文字列に含まれる英字と数字を、半角から全角に&全角から半角に変換する処理を書きました。検索して調べたところ、NKF(Network Kanji code conversion Filter)を使う方法が多くヒットしたのですが、文字列中の英数字の変換が目的だったので、より簡単な String#tr メソッドを使う方法を採用しました。

こんにちは、hachi8833です。 少し前に、babaさんから「Rubyの内部文字コードはUTF-8じゃないよ」とツッコミがありました。 (追記: 上は会話の途中から切り取りましたのでご了承ください) いきなりの展開にくらくらきましたが、babaさんはさらにたたみかけます。 こうしたことはとっくにご存じの方も多いと思いますが、「Rubyといえば2.0以来UTF-8完全対応なんじゃないの」と勝手に思い込んでた私は脳に掌底を食らったような思いです。ああ、でもこういうことがあるから面白い。 ⚓ プログラミング言語と内部文字コードの関係 まず最初に押さえておきたい点です。プログラミング言語で文字コードに関連する部分は、「文字列」「正規表現」「入出力」「コード中の文字リテラル(""の中など)」「コード中の文字リテラル以外の要素(変数名など)」「ファイル名」などが中心になります。そして文字列に関連し
#変換テーブル上の文字が置換されていることを確認 from_chr = "\u{301C 2212 00A2 00A3 00AC 2013 2014 2016 203E 00A0 00F8 203A}" p from_chr p from_chr.sjisable #Shift_JISにもWindows-31Jにもない文字は諦めて?にする p "ä".sjisable # Windows拡張領域は保持されていることを確認 p "①②③髙島屋".sjisable 実行結果 これどんないいことがあるの? Rubyの内部コードはもはやUTF8。だけど、最終的にはエクセル向けにシフトJISのCSVを出力することもある。だけど、内部コードから出力時にエンコード変換をすると、対応する文字が見つからなくて、例外がでちゃう。例外はヤなので、多少は文字を置き換え(もしくは全く変換できないものは?に置換)して
Spring Data JPAには、Repositoryインターフェースに宣言されたメソッドを、その名前からクエリを生成して自動的に生成してくれるお便利機能があります。どんな命名規則があるのか分からなかったのでメモ。 基本的にはマニュアルの要約です。 環境 Java ・・・ jdk1.8 Spring Boot ・・・ 1.3.5-RELEASE DB ・・・ MySQL 5.7 構文 以下の3つの要素を規則に従って組み合わせたメソッド名をRepositoryインターフェースに宣言することで、自動実装が利用可能になります。 プレフィックス(find...By read...By query...By count...By get...By) キーワード フィールド名 以下のエンティティを例に使います。 @Entity public class Employee implements Ser
#本記事について 本記事では、正規表現を用いて文字列操作が出来るようになることを目的にします。正規表現を使ったことがない人でも分かりやすいように書いたつもりです。 具体的には、Stringクラスのメソッドsub、gsub、matchメソッドが登場し、その中で正規表現を使っていきます。 なお、本記事の作成にあたって、 Rubyリファレンス(String) RubyのString/Regexpクラスによる強力な文字列操作/正規表現 等を参考にしています。 それでは、早速みていきたいと思います。 #正規表現を使う Regexpクラス Rubyで正規表現を扱うためのクラスはRegexpクラスです。(Regexp = Regular Expression) このRegexpクラスを用いながら、正規表現を行っていきます。 そもそも、正規表現を用いる理由は以下です。 ある文字列が特定のパターンを持ってい
immutable??mutable?? ということで、immutable(イミュータブル:不変)とmutable(ミュータブル:変更可能)なオブジェクトの話です。 そもそもimmutable/mutableってなんだろう?というところから書きたいと思います。 |> immutable(不変)オブジェクトとは オブジェクト(インスタンス)そのものの状態を変更できないこと。 Javaにおける代表格はStringクラスです。事実Stringは自分自身の状態を変更するメソッドを提供していません。 ※replaceメソッドなんかは勘違いされやすいですが、自分自身が変化することはないと覚えていれば分かりやすいかと。 不変オブジェクトとして、必要な条件は下記の通り。 オブジェクトの内部状態を変更可能なメソッドを提供しない。(つまり、getterは用意してもsetterやそれに準ずるものは用意しない)
[Javaプログラミング関連] JavaのString中の全角半角の判定 Javaにおいては文字列は全てUNICODEで表現されるため、全角半角の判定も各文字のUNICODEで判断する他ありません。以下のサンプルように判定します。 public class Hankaku { public static void main() { String s = "全角han漢字\\~~カナ"; System.out.print( s+": " ); for( int i=0; i<s.length(); i++ ) { char c = s.charAt( i ); if( ( c<='\u007e' )|| // 英数字 ( c=='\u00a5' )|| // \記号 ( c=='\u203e' )|| // ~記号 ( c>='\uff61' && c<='\uff9f' ) // 半角カナ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く