2016-09-08 4 views
-4

たとえば、私はいくつかのスポーツ試合の結果を文字列で表しています。私はチームAに集中し、残りのチームとスコアを比較して、チームAが獲得したマッチ数、失われたマッチ数などを印刷します。C#文字列からの切り出しと比較

string results = " A 1 B 0, A 2 C 4, A 1 D 8, A 5 E 9"; 

私はこれを行うための最善の方法は、チームAすべての項目を抽出し、それらとの配列を移入し、残りのスコアと同じことを行うためにと思います。私はこれを解決するためにインデックスを試しましたが、困っています。何か案は ?

編集:試みを投稿しないように期限:

char[] tobeconverted = results.Where(Char.IsDigit).ToArray(); 
     int[] sequence = new int[10]; 

     for (int i = 0; i < tobeconverted.Length; i++) 
     { 
      sequence[i] = Convert.ToInt32(tobeconverted[i].ToString()); 

     } 

これは、私はそれらを区別する方法がわからないよように、すべての数字を配列に移入されます。

 string teamA = "A "; 
     int indexOfNextOccurance = results.IndexOf(teamA, results.IndexOf(teamA) + 1); 

私は、番号を抽出し、int型に変換したサブストリングとindexsを使用するために計画されたが、第一および第二の発生のために、この唯一の作品と私は他の数の値を取得する方法は考えています。

+1

あなたはあなたが行うことができない問題を解決するために、コミュニティを頼むとき、あなたの試みを投稿するならば、我々は、これは私も質問 – Steve

+0

のtehのcodez_種類_giveではないことを見ることができますので、それは投稿、優れていますあなたの試みは、あなたがすでに試したことがあるものと、実行できないものとして捨てたものを示唆するのを妨げます。 – Tim

+4

8つのデータが1つの文字列にどのように接着されましたか? – Plutonix

答えて

0
  1. 文字列をコンマで区切ります。これは文字列の配列を返します。
  2. 配列内の各文字列を空白で分割します。この結果、別の配列になります。
  3. 配列のメンバーを抽出します。

サンプルプログラムです。

class Program 
    { 
    static void Main(string[] args) 
    { 

     string results = " A 1 B 0, A 2 C 4, A 1 D 8, A 5 E 9"; 

     string[] matches = results.Trim().Split(','); 

     List<Match> sportResults = new List<Match>(); 
     foreach (string match in matches) 
     { 
     string[] parts = match.Trim().Split(null); 

     sportResults.Add(new Match() { 
      Team1 = parts[0], Score1 = int.Parse(parts[1]), 
      Team2 = parts[2], Score2 = int.Parse(parts[3])}); 

     } 

     sportResults.ForEach(a => Console.WriteLine(a)); 
    } 
    } 

チーム/スコアを別のクラスにカプセル化します。

class Match 
    { 
    public string Team1 { get; set; } 
    public string Team2 { get; set; } 

    public int Score1 { get; set; } 
    public int Score2 { get; set; } 

    public override string ToString() 
    { 
     return "Team " + Team1 + " " + Score1 + " VS " + Team2 + " " + Score2; 
    } 
    } 
+0

ありがとう、それを感謝する – IamHe

0
string results = "A 1 B 0, A 2 C 4, A 1 D 8, A 5 E 9"; 
     List<int> teamAScores = new List<int>(); 
     List<int> otherTeamScores = new List<int>(); 
     foreach(string scoreSet in results.Split(',')) 
     { 
      scoreSet.Replace(" ", ""); 
      int teamA = -1; 
      int teamX = -1; 
      int.TryParse(scoreSet.Substring(1, 1), out teamA); 
      int.TryParse(scoreSet.Substring(3, 1), out teamX); 
      if (teamA > -1 && teamX > -1) 
      { 
       teamAScores.Add(teamA); 
       otherTeamScores.Add(teamX); 
      } 
     } 

ここで、各ゲームのスコアがインデックスの点で一致するリストがあります。

+0

ありがとう、それは助ける – IamHe

+0

心配しない - 世話をする! –