2011-01-20 19 views
0

私は抽出して別の文字列に変換する必要がある文字列にデータを格納しています。私の文字列データは次のようになります:C#の文字列から注文番号を抽出して別の文字列に入れます

ウィジェットPO NO。 1234
ボディPO NO。 123456
ウィングPO NO。 12345-2
ナットPO NO。 1-234-56-7

"PO NO"常に同じであるため、「NO。」の末尾のスペースの後にデータを抽出し、それを別の文字列に変換して数値データ(購入注文番号)を持たせたいだけです。

ありがとうございました。

答えて

1
 const string refString = "PO NO."; 
     string aLine = "Widget PO NO. 1234"; 

     string orderNumb = aLine.Substring(aLine.LastIndexOf(refString) + refString.Length).Trim(); 
1

あなたは正規表現を使用することができます。

 Match m = Regex.Match(str, @"PO NO\. (?<PO>\d+)$"); 
     string poNumber = m.Groups["PO"].Value; 
+0

正規表現は本当に高すぎます。ここでは必要ありません。 – JYL

1

String.Splitをお試しください:

strOrder = "Widget PO NO. 1234"; 
arSplit = strOrder.Split(" PO NO. "); 

これはNO POの前にすべてを配列arsplit[]を作成します。 arSplit[0]とそれ以降はすべてarsplit[1]です。

0
string order = orders.Split(" ")[3]; 
+0

"My Wing PO番号12345-2" – JYL

+0

とはもう動作しませんこれは型名が常に1語に依存することになりますので、これに注意してください(ただし、ハードコードされた '3'を参照して、代わりにいくつの部分があるかを調べるといいでしょう)。 –

+0

@JYL:私は提示されたデータを扱っています。追加のスペースが可能な場合は[array.Count - 1]を使用してください。 –

1

必要な部分を抽出するには、正規表現を使用します。この正規表現は、グループ化された結果を返しますので、まだ提供する...

あなたは、各テキスト部分の後にスペースを持っている、あなたの実際の文字列表現を使用して
string[] strings = new string[] {"Widget PO NO. 1234", 
          "Body PO NO. 123456", 
          "Wing PO NO. 12345-2", 
          "Nut PO NO. 1-234-56-7"}; 
Regex regex = new Regex(@"[.\W]*PO NO\.\W*([\d-]*)"); 
Match match; 

foreach (string s in strings) 
{ 
    match = regex.Match(s); 
    Console.WriteLine(match.Groups[1].Value); 
} 
+0

正規表現は本当にあまりにも多くの費用がかかります。ここでは必要ありません。 – JYL

2

[.\W]*PO NO\.\W*([\d-]*) 

は、ここではいくつかのデモコード(C#の)です別のルート...

String rawPO = "Body PO NO. 123456"; 
String trimmedPO = rawPO.Remove(0, rawPO.LastIndexOf(" ")).Trim(); 
関連する問題