質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

Q&A

解決済

1回答

1287閲覧

[PowerShell] 濁点付きの日本語文字列の比較に関する質問

autumn_nsn

総合スコア335

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

0グッド

1クリップ

投稿2020/04/09 07:41

お世話になっております。

日本語で濁点付きの文字列を作成する場合には、以下のように
「前の文字と合成した文字」として入力するか、「単独の濁点記号」として入力」
することになります。後者はレアーケースだと思いますが。

データ
データ

teratailの画面では同じに見えますが、上記の2行を選択コピーしてエディターなどにコピーすると別の文字列だと分かると思います。

PowerShellで以下のような実験をしてみると、これらの違いが検出されず、
同じ文字列として判定されてしまいます。

PowerShell

1PS D:\WorkShop> $a = "データ" 2PS D:\WorkShop> $b = "データ" 3PS D:\WorkShop> $a, $b 4データ 5データ 6PS D:\WorkShop> $a -eq $b 7True 8PS D:\WorkShop> [String]::Compare($a, $b) 90 10PS D:\WorkShop>

上記のコードだと同じに見えてしまうので、画像キャプチャーも貼り付けます。
コンソール画面

おそらく、PowerShellが気を利かせて同じ文字だと判定してくれている
と思うのですが、私は事情がありまして別の文字列として判定したいのです。

どのようにすればこれらの文字列比較で「False」を返すようにできるのでしょうか?
よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2020/04/09 07:48

バイト列に直して比較してみてください。
guest

回答1

0

自己解決

Zuishin 様のアドバイスで自己解決しました。

を使用してバイト列に変換して比較することにします。

(追加)
あの後いろいろ調べていたら、Equals()やCompareOrdinal()といったメソッドを使用すると、
意図どおりの結果が得られました。

イメージ説明

投稿2020/04/09 23:32

編集2020/04/10 04:17
autumn_nsn

総合スコア335

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問