как использовать расщепление, чтобы получить среднее значение, полученное из datagridview - PullRequest
1 голос
/ 28 июня 2011

привет, у меня есть вопрос, который я хочу задать о c # и форме окна

  1. у меня есть эти данные ... A, B, C;А1, В1, С1;А2, В2, С2;(эти данные не являются жестко закодированными, они могут продолжать изменяться, когда поступает больше данных), я выбираю этот столбец базы данных с именем ColABC и извлекаю и помещаю в таблицу данных, так что можно всегда получать средние данные? .... но это всегда этот формат запись1 данные, запись1 данные, запись1;данные записи2, записи записи3, записи ... и , поэтому я хочу, чтобы эти данные извлекли все среднее значение, чтобы это стало этим B, B1, B2 ....... и так далее ...

    ID |  ColABC
     1 |  A,B,C; A1,B1,C1; A2,B2,C2;
    

Это похоже на мой DataGridView, приведенный выше.

Единственное, что я знаю, это использовать разделение сначала на ;, а затем на ,.

Есть ли какой-нибудь прямой путь?

Примерно так, я пытаюсь:

string[] doll = null;
doll = Convert.ToString(DGV.CurrentRow.Cells[0].Value).Split(';');

В основном, как пример приведенного выше кода, кукла получает "A, B, C".; A1, B1, C1; A2, B2, C2; "эти данные, которые я извлекаю из datagridview, поэтому, если я объявлю roll [0], это даст мне" A, B, C ", как то, что я упомянул выше,изменить так, как я могу получить среднее значение всегда ??

Ответы [ 3 ]

1 голос
/ 28 июня 2011
var input = "A,B,C; A1,B1,C1; A2,B2,C2;";
var resultList = Regex.Matches(input, @".*?,(.*?),.*?;")
    .Cast<Match>()
    .Select(arg => arg.Groups[1].Value)
    .ToList();

var firstValue = resultList[0];
var secondValue = resultList[1];

// bind to a combobox
comboBox1.DataSource = resultList;

var comaSeparatedString = string.Join(",", resultList);
0 голосов
/ 02 октября 2014

Как насчет этого .... Не в моем устройстве, чтобы проверить этот код ... Тем не менее, это подход ...

  foreach(DataGridViewRow dgvr in Datagridview.Rows){

  if(dgvr!=null){
  string middlevalues="";
  string testString=      dgvr.Cells[ColumnIndex].Value.ToString();
  //If this string is string testString = "A,B,C; A1,B1,C1; A2,B2,C2;";
  string[] basesplit = testString.Split(';');
  int i=0;
  foreach(string words in baseplit){
  if(i<baseplit.Count-1){
  middlevalues=words.Split(',')[1].ToString()+','
  }else{       middlevalues=words.Split(',')[1].ToString();
  i++;
  }
  }
  }


  }
0 голосов
/ 28 июня 2011
string testString = "A,B,C; A1,B1,C1; A2,B2,C2;";

Regex rgx = new Regex("[^,]+,([^,]+),[^,]+");
List<string> whatYouWant = testString.Split(';').Select(a => rgx.Replace(a, "$1")).ToList();

или

string testString = "A,B,C; A1,B1,C1; A2,B2,C2;";

Regex rgx = new Regex("[^,;]+,([^,;]+),[^,;]+;?");

for(Match m = rgx.Match(testString); m.Success; m = m.NextMatch())
{
    Console.WriteLine(m.Groups[1].Value);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...