2016-02-12 7 views
5

F#には独自の文字列操作ライブラリがありますか?F#には独自の文字列操作ライブラリがありますか?

私はF#を学ぼうとしているので、自分自身が既存のSystem.stringメソッドを使用していますか?

これを行う必要がありますか?

コード:

open System 

type PhoneNumber = 
    { CountryCode:int 
     Number:string } 

// b. Create a function formatPhone that accepts a PhoneNumber record and formats it to look like something like this: "+44 1234 456789" 
let formatPhone phoneNumber = 

    let getLeadingCharacters (length:int) (text:string) = 
     text.Substring(0, length) 

    let getLastCharacters (length:int) (text:string) = 
     text.Substring(text.Length - length, length) 

    printf "+%i %s %s" phoneNumber.CountryCode 
         (phoneNumber.Number |> getLeadingCharacters 4) 
         (phoneNumber.Number |> getLastCharacters 6) 

formatPhone { CountryCode=44; Number="123456789" };; 

UPDATE

更新機能から:

let formatPhone phoneNumber = 

    let getLeadingCharacters (length:int) (text:string) = 
     text.Substring(0, length) 

    let getLastCharacters (length:int) (text:string) = 
     text.Substring(text.Length - length, length) 

    printf "+%i %s %s" phoneNumber.CountryCode 
         (phoneNumber.Number |> getLeadingCharacters 4) 
         (phoneNumber.Number |> getLastCharacters 6) 

formatPhone { CountryCode=44; Number="123456789" };; 

へ:

let formatPhone phoneNumber = 

    printf "+%i %s %s" phoneNumber.CountryCode 
         phoneNumber.Number.[0..3] 
         phoneNumber.Number.[4..8] 

formatPhone { CountryCode=44; Number="123456789" };; 
+2

StringHelperモジュールに含まれています。それは完全に正常であると私を襲う。 –

+0

「反腐敗」? –

+1

[DDD](http://amzn.to/WBCwx7)の用語* anti-corruption layer *から採用されています。 –

答えて

8

いいえ、F#には.NETライブラリを複製する特定のString libraryはありません。余分な文字列関数を持つstring moduleがあります。

はい、.NET関数を使用します。

F#がすべての.NETライブラリを利用できるという事実は、それが最も強力な機能の1つです。最初は、カープリドされたパラメータを使用して関数をミックスし、タプルパラメータを使用して.NETからの関数を奇妙に見ています。

NuGetでは、FSharp拡張子も持つパッケージが表示されます。例えばMathNet NumericsおよびMathNet Numerics FSharp。これらは、.NETライブラリの慣用的なF#使用を可能にするラッパー関数です。

F#で使用する関数やメソッドを探すときは、このトリックをよく使います。 .NETを検索するにはclassをキーワードに、F#固有のコードを検索するにはmoduleをキーワードに使用してください。例えば

グーグル:MSDN string class
まずアイテム:String Class

グーグル:MSDN string module
まずアイテム:それが依存Core.String Module (F#)

+0

あなたは豊富な知識を持っています。どうすればあなたに従うことができますか?たとえば、YouTube、ブログ、ポッドキャストなど。 –

+2

[F#トップ回答](http://stackoverflow.com/tags/f%23/topusers)に従って、新しい質問はこちら私は[CiteSeer](http://citeseer.ist.psu.edu/index)でたくさんの研究論文を読んで、たくさんのコードを書いています。ここ数ヶ月をニューラルネットワークの基本だけで過ごし、問題解決に1週間以上かかる場合でも問題を抱えています。私は最近、ニューラルネットワークをデバッグする最良の方法の1つは、すべての重みと偏りの値を見ることなく、視覚的なイメージであることを学びました。 –

0

スクリプト用にFAKEのようなオープンソースライブラリを使用している場合は、 を使用して、StringHelperモジュールを再利用できます。

FAKEは、私は* `getLeadingCharacters`すべての時間のような小さな*腐敗防止機能を作成https://github.com/fsharp/FAKE/blob/master/src/app/FakeLib/StringHelper.fs

+3

これはちょうど答えとして投稿されたコメントではありませんか? – Carsten

関連する問題