2017-09-25 29 views
0

少し助けが必要です。 文字列に10進数と文字を分割したい。 例:0.5Lg ---> 0.5を分離し、Lgを分離する。 0.22Ldd ---> 0.22独立したLDDセパレート小文字と小文字を文字列から分割する方法

私は続いて試してみました:

Dim input As String = "0.22Ldd" 
    Dim pattern As String = "[^0-9\.]+" 
    Dim substrings() As String = Regex.Split(input, pattern) 
    TextBox11.Text = substrings(0) 

これは、0.22の出力を提供しますが、どのようにLDD部分を抽出するには?

「\ D +」と「\ d +」と「\ W +」と「a-zA-Z」+などのパターンを、グーグルではなく運がないと置き換えようとしました。

誰かが助けることができます。私は出力がドットまたは数字と一緒に来るかのいずれかをたくさん検索した。

+0

RegExについて読んだことはありますか?これはあなたの質問に答えるのに役立ちます... – muffi

答えて

0

あなたはこのLINQのアプローチを使用することができます。

Dim input As String = "0.22Ldd" 
Dim numericPart = input.TakeWhile(Function(c) Char.IsPunctuation(c) orelse Char.IsDigit(c)).ToArray() 
Dim number as Decimal 
Dim validNumber = Decimal.TryParse(new String(numericPart), NumberStyles.Any, NumberFormatInfo.InvariantInfo, number) 
Dim letterPart As String = input.Substring(numericPart.Length) 
+0

素晴らしい!そのうまく動作します。私は小さな疑いがある。 3番目と4番目は数字だけが小数であることをチェックしていますか? –

+0

@BharathR:Decimalは、整数または小数点以下の桁数を受け入れる型です。だから、最も柔軟なタイプです –

0

あなたが正規表現でそれらを分割したい場合は、以下のパターンを試すことができます。 Regex.Splitはパターンマッチングを提供するので、単一の正規表現で数値パターンとテキストパターンをチェックする必要があります。

Dim pattern As String = "([a-zA-Z]*)([0-9]*[.]?[0-9]+)" 
関連する問題