Составить регулярное выражение - C# (202380)
Формулировка задачи:
Здравствуйте,
помогите пожалуйста написать регулярку чтобы она делала следующее:
есть массив строк, если в строке встречается сочетание символов "
надо получить:
пробую как то так, но не очень получается...
> (
" то создать новую строку в которой все что идет после ">" надо удалить, если такого сочетания не встречается, то оставить, и загнать все это в массив. типа есть:
> <id
> (
PO00-123004) GHL00004 > <smiles> (
EN300-12313204) OC(=O)C=1C=CC=2C(=O)C=3C=CC=CC3C(=O)C2C1Cl > <MDLNUMBER> (
HI0-00004) MFCD00429391 > <name> (
J00-789704) 1-Chloro-(9,10-dioxo-9,10-dihydro-anthracene)-2-carboxylic acid > <CAS> (
POIY00-456) 82-23-5 > <MP> (
EK00-95448935) 199 - 201(оС)
> <id>
GHL00004
> <smiles>
OC(=O)C=1C=CC=2C(=O)C=3C=CC=CC3C(=O)C2C1Cl
> <MDLNUMBER>
MFCD00429391
> <name>
1-Chloro-(9,10-dioxo-9,10-dihydro-anthracene)-2-carboxylic acid
> <CAS>
82-23-5
> <MP>
199 - 201(оС)
string[] separator = { "\r\n" }; source = System.IO.File.ReadAllText(openFileDialog2.FileName, Encoding.Default).Split(separator, StringSplitOptions.None); void sdf() { string[] sdffline = new string[0]; Array.Resize(ref sdffline, source.Length); int f = 0; foreach (string x in source) // Выводит только уникальные записи { int index=0;// = Regex.Match(x, @"> (").Index; index = x.IndexOf(@"> ("); if (index != -1) { sdffline[f] = (x.Substring(0, index + 1)); } else { sdffline[f] = x; } f++; } richTextBox2.Lines = sdffline.ToArray<string>(); }
с регуляркой вроде вроде разобрался...
вот только теперь при чтении файла размером 140 метров получаю исключение:
Exception of type 'System.OutOfMemoryException' was thrown
Решение задачи: «Составить регулярное выражение»
textual
Листинг программы
void sdf() { richTextBox2.Clear(); string[] sdffline = new string[0]; Array.Resize(ref sdffline, source.Length); int f = 0; foreach (string x in source) // Выводит только уникальные записи { int index=0;// = Regex.Match(x, @"> (").Index; index = x.IndexOf(@"> ("); if (index != -1) { sdffline[f] = (x.Substring(0, index + 1)); } else { sdffline[f] = x; } f++; } if (source.Length < 500000) { richTextBox2.Lines = sdffline.ToArray<string>(); } System.IO.File.WriteAllLines(openFileDialog2.FileName + "111.sdf",sdffline,Encoding.Default); label3.Text = source.Length.ToString(); label4.Text = sdffline.Length.ToString(); } private void button4_Click(object sender, EventArgs e) { openFileDialog2.Filter = "SDF (*.sdf)|*.sdf|Text files (*.txt; *.tab; *.tbl)|*.txt; *.tab; *.tbl; *.ods|All files (*.*)|*.*"; if ((openFileDialog2.ShowDialog() == DialogResult.OK)) { string[] separator = { "\r\n" }; source = System.IO.File.ReadAllText(openFileDialog2.FileName, Encoding.Default).Split(separator, StringSplitOptions.None); //richTextBox1.Lines = source; sdf(); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д