2016-05-20 5 views
0

文字列「10-1283-01」の長さが同じで、「10-xxxx-0x」のような文字列があります。 「10-」のような最初の3文字だけが必要です。最後は "-0"のような2文字です。C#のサブストリング

だから、以下のようなダイビング/サブストリングです。 first3のために私に必要な文字列を与えるが、lastPartのために私にArgumentOutOfRangeExceptionを与える。

どのように-0文字列が得られるか教えてください。おかげでアドバンス

string partnoveri = lpartno.Text; 
    string first3=partnoveri.Substring(0, 3); 
    string lastPart = partnoveri.Substring(partnoveri.IndexOf("-0"),partnoveri.Length-1); 
+0

if(partnoveri.Substring(0,3)== "10 - " &&(partnoveri .substring(7,2)== "0"))then valid not else – Shon

答えて

2

なぜ正規表現を使用しませんか?

using System; 
using System.Threading; 
using System.Threading.Tasks; 
using System.Linq; 
using System.Collections.Generic; 
using Newtonsoft; 
using Newtonsoft.Json; 
using Newtonsoft.Json.Serialization; 
using Newtonsoft.Json.Linq; 

using System.Text.RegularExpressions; 

class Program 
{ 
    static void Main(string[] args) 
    { 
     try 
     { 
      var pattern = "[0-9]{2}-[0-9]{4}-[0-9]{2}"; 
      var input = "10-1283-01"; 

      var matches = Regex.Matches(input, pattern); 
      if(Regex.IsMatch(input, pattern)) 
      { 
       Console.WriteLine("MATCH"); 
      } 



     } 
     catch (Exception ex) 
     { 
      Console.WriteLine(ex.Message); 
     } 
    } 




} 
+1

OPは、正規表現のパターンは "^ 10- [0-9] {4} -0 [0-9] $"( 'x'は[0-9]であると仮定します)。 –

+0

私の誤り。 – dfdsfdsfsdf

+0

@KMCはあなたに助けてくれてありがとうございます。それは私にとって素晴らしい仕事です。私のコーディングでは、「15-xxxxx-1」のようなパターンをいくつか追加する必要があります。 0x "、" 800-xxxxx-0x "などです。誰がvarパターンを書くのか理解しようとしています。https://msdn.microsoft.com/en-us/library/ff650303.aspxを使っています。 Regex Patternの明確なアイデアを得ることができます。今すぐ詳細を見る時間がありません。 – user6363065

1

にC#Substring方法は、あなたのコードが示すように、むしろそれは、あなたが2つの文字を探しているなら、ということを考えると

String.Substring(int startIndex [, int numberofCharacters ]) 

ある

String.Substring(int startIndex, int endIndex) 

ではありませんあなたは使用します:

string lastPart = partnoveri.Substring(partnoveri.IndexOf("-0"), 2); 

それは、@ KMCの正規表現ソリューションを選ぶと言われています。 Substringはあなたの例では機能しますが、10-0283-01のように4番目の文字がゼロの場合は失敗します。

0

2つの最後の文字を受信するには、以下のような部分文字列を使用することができます。

partnoveri.Substringを(partnoveri.Length-2、2);

この場合は正規表現を使用することもできます。