C# と VB.NET の質問掲示板
ASP.NET、C++/CLI、Java 何でもどうぞ
C# と VB.NET の入門サイト
依存する
掲示板トップ
C# と VB.NET 入門
新規作成
利用方法/規約
ツリー表示
トピック表示
ランキング
記事検索
過去ログ
[トピック内 4 記事 (1 - 4 表示)] <<
0
>>
■103726
/ inTopicNo.1)
依存する
▼
■
□投稿者/ kiku
(475回)-(2025/06/09(Mon) 10:30:38)
分類:[.NET 全般]
環境
.NET8
WPF
海外のPC(詳細は不明)
Windows11
下記命令の返値が期待値と違う現象が発生しています。
fileName.LastIndexOf("_")
原因を調べると、カルチャ依存しているため、
期待値と違う結果となっていることがわかりました。
この状況を開発PCでも発生させたいのですが、
OSのどの設定が依存しているかについて知見のある方、教えて欲しいです。
現在のところ、下記をいろいろと変更しているのですが、再現しない状態です。
・Windowsの表示言語
・国または地域
引用返信
編集キー/
編集
■103727
/ inTopicNo.2)
Re[1]: 依存する
▲
▼
■
□投稿者/ kiku
(476回)-(2025/06/09(Mon) 11:15:21)
■
No103726
(kiku さん) に返信
> 現在のところ、下記をいろいろと変更しているのですが、再現しない状態です。
> ・Windowsの表示言語
> ・国または地域
どうやら下記に依存するようです。
時刻と言語 → 管理用の言語の設定 → システムロケール
引用返信
編集キー/
編集
■103728
/ inTopicNo.3)
Re[2]: 依存する
▲
▼
■
□投稿者/ 魔界の仮面弁士
(3853回)-(2025/06/09(Mon) 11:37:31)
■
No103727
(kiku さん) に返信
>>現在のところ、下記をいろいろと変更しているのですが、再現しない状態です。
>> ・Windowsの表示言語
>> ・国または地域
> どうやら下記に依存するようです。
> 時刻と言語 → 管理用の言語の設定 → システムロケール
システムロケールを変更せずに検証する場合は、意図的に現在のスレッドのカルチャを変更するという手もあります。
https://learn.microsoft.com/ja-jp/dotnet/fundamentals/runtime-libraries/system-globalization-cultureinfo-currentculture
もしもカルチャー非依存であることを求める場合、StringComparison 引数付きのオーバーロードを呼ぶ形に改修すべきでしょうね。
特にライブラリ開発者は、StringComparison.Ordinal あるいは (OrdinalIgnoreCase)を呼ぶことが
互換性およびパフォーマンスの点で望ましいとされるようです。
もし、StringComparison 引数無しの IndexOfメソッドが呼び出されたときには
String を検索する場合は StringComparison.CurrentCulture 指定
Char を検索する場合は StringComparison.Ordinal 指定
に相当する動作となります。
https://learn.microsoft.com/ja-jp/dotnet/standard/base-types/best-practices-strings#choosing-a-stringcomparison-member-for-your-method-call
https://note.dokeep.jp/post/csharp-globalization-icu/
引用返信
編集キー/
編集
■103729
/ inTopicNo.4)
Re[3]: 依存する
▲
▼
■
□投稿者/ kiku
(477回)-(2025/06/09(Mon) 11:46:13)
■
No103728
(魔界の仮面弁士 さん) に返信
> ■
No103727
(kiku さん) に返信
> システムロケールを変更せずに検証する場合は、意図的に現在のスレッドのカルチャを変更するという手もあります。
>
https://learn.microsoft.com/ja-jp/dotnet/fundamentals/runtime-libraries/system-globalization-cultureinfo-currentculture
確認しました。
> もしもカルチャー非依存であることを求める場合、StringComparison 引数付きのオーバーロードを呼ぶ形に改修すべきでしょうね。
> 特にライブラリ開発者は、StringComparison.Ordinal あるいは (OrdinalIgnoreCase)を呼ぶことが
> 互換性およびパフォーマンスの点で望ましいとされるようです。
OrdinalIgnoreCaseで対応できることを確認しました。
> もし、StringComparison 引数無しの IndexOfメソッドが呼び出されたときには
> String を検索する場合は StringComparison.CurrentCulture 指定
> Char を検索する場合は StringComparison.Ordinal 指定
> に相当する動作となります。
>
https://learn.microsoft.com/ja-jp/dotnet/standard/base-types/best-practices-strings#choosing-a-stringcomparison-member-for-your-method-call
>
https://note.dokeep.jp/post/csharp-globalization-icu/
なるほど、情報ありがとうございます。
解決済み
引用返信
編集キー/
編集
このトピックをツリーで一括表示
トピック内ページ移動 / <<
0
>>
このトピックに書きこむ
入力内容にタグは利用できません。
他人を中傷する記事は管理者の判断で予告無く削除されます。
半角カナは使用しないでください。文字化けの原因になります。
名前、コメントは必須記入項目です。記入漏れはエラーになります。
入力内容の一部は、次回投稿時の手間を省くためブラウザに記録されます。
URL は自動的にリンクされます。
記事中に No*** のように書くとその記事にリンクされます(No は半角英字/*** は半角数字)。
名前
(*必須)
E-Mail (任意)
Web サイト (任意)
投稿モード
通常モード
図表モード (ソースコードを貼る場合はこちらを使用)
本文
(質問の場合は、開発環境・使用言語のバージョンなどを最初に書いてください)
■No103729 (kiku さん) に返信 > ■No103728 (魔界の仮面弁士 さん) に返信 >>■No103727 (kiku さん) に返信 >>システムロケールを変更せずに検証する場合は、意図的に現在のスレッドのカルチャを変更するという手もあります。 >>https://learn.microsoft.com/ja-jp/dotnet/fundamentals/runtime-libraries/system-globalization-cultureinfo-currentculture > 確認しました。 > >>もしもカルチャー非依存であることを求める場合、StringComparison 引数付きのオーバーロードを呼ぶ形に改修すべきでしょうね。 >>特にライブラリ開発者は、StringComparison.Ordinal あるいは (OrdinalIgnoreCase)を呼ぶことが >>互換性およびパフォーマンスの点で望ましいとされるようです。 > OrdinalIgnoreCaseで対応できることを確認しました。 > >>もし、StringComparison 引数無しの IndexOfメソッドが呼び出されたときには >> String を検索する場合は StringComparison.CurrentCulture 指定 >> Char を検索する場合は StringComparison.Ordinal 指定 >>に相当する動作となります。 >>https://learn.microsoft.com/ja-jp/dotnet/standard/base-types/best-practices-strings#choosing-a-stringcomparison-member-for-your-method-call >>https://note.dokeep.jp/post/csharp-globalization-icu/ > なるほど、情報ありがとうございます。 >
編集キー
自分の投稿を編集する時に必要です
(半角8文字以内)
解決済み
/
解決したらチェックしておきましょう。
プレビュー/
管理者用
-
Child Tree
-