F#

2016-11-01 12 views
4
のアルファベット文字

編集/更新: ありがとうございます。私はあまりにも曖昧であることを理解していますが、コードの裸の行を掲示することがこの場合に有用であるかどうかは不明です。変数に格納されてF#

TempUnit.DataSource = {"°C", "°F", "°R", "K"} 

...:

Dim unit As String = TempUnit.SelectedItem.ToString 

...に渡される私のようにその検証値でプルダウン制御を持っている私の.vbファイルで

他の変数と一緒の関数:

Function xxx(..., ByVal unitT As String) As Double 

...最後にを呼び出しますファイルと使用して評価されます:

let tempConv t u = 
match u with 
|"°C" -> t * 9.0/5.0 + 32.0 
|"°R" -> t - 459.67 
|"K" -> t * 9.0/5.0 - 459.67 
|_ -> t 

ケルビン以外の温度単位を選択した場合、マッチが失敗し、デフォルト(この文脈では華氏である)他のケースです。私の代わりに部分文字列を評価することによって、完全度のシンボルを迂回してしまった:プログラムが再び取り組んでいるが、私はどちらかといえば、私は、文字列の一致停止作業を行うために、変更何見当がつかない

Dim unit As String = TempUnit.SelectedItem.ToString.Substring(1) 

。私が試した最初のことは、他のシンボルを試すことに加えて、同じ文字列であることを保証するために、あるファイルから別のファイルにコピー/ペーストすることでしたが、役に立たなかった。度の記号は私の注意を引いたものですが、圧力単位をチェックして、マイクロプレフィックスとまったく同じ問題を発見しました。

ありがとう、Hans Passant、私は可能な解決策としてUnicodeを念頭に置いていましたが、それは今の暑さでは簡単には解決できないようです。私はあなたのリンクに感謝します。

オリジナルポスト: 私は、その引数が、特殊文字(例えば「°C」「マイクロバール」)を含む測度列の単位を含んでF#ライブラリファイルに保存されている関数を参照VBプログラムを持っています。

文字列は.vb.fsファイルで同じです。 F#ライブラリファイルが私に知られていない理由でAlt-Code文字の認識を停止するまで問題はありませんでした。

F#ファイルとVBファイルの文字列定義から違反しているAltコード文字を削除すると、プログラムは意図したとおりに動作します。

Alt-Code文字を含む2つの同一の文字列の間で一致が失敗する原因は何ですか?

F#(とVBについて言えば、Altキーコードの文字を処理する適切な方法は何ですか?

+6

コードを表示できると便利です。 F#で何が定義されていますか?VBコードはどのようにそれにアクセスしますか? – TeaDrivenDev

+4

...「動作しない」とはどういう意味ですか? –

+4

'.fs'ファイルにはどのようなエンコーディングがありますか?いくつかのUTFバリアント、それはBOMを持っていますか? – ildjarn

答えて

10

μ字形は少し悪名高いです。 Unicodeには、U + 03BC = "Greek small letter Mu"とU + 00B5 = "Micro sign"という2つのコードポイントがあります。 1つはギリシャアルファベットの手紙、もう1つは数学と単位でよく現れる記号です。

μとμを比較します。ほとんどのフォントではほとんど同じです(Segoe UIとの違いを見ることができます)、人間の目を非常に簡単に欺くことができます。 Typographersは、彼らが同じではないと主張します。特に、彼らがギリシャ人なら、私は想像します。コンピュータも、あなたが確かに対処している問題ではありません。

修正するには、コピー/貼り付けまたは再入力します。 WindowsのCharmap.exeアプレットは、この権利を得るのにとても便利です。

+1

偉大な答え。いつものように先見的な人、nobugz。 – ildjarn