private void InputLrc_Click(object sender, RoutedEventArgs e) { // 选择文件 OpenFileDialog dlg = new OpenFileDialog(); dlg.Filter = "Lrc|*.lrc|Text|*.txt|所有文件|*.*"; if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK) { LrcPath = dlg.FileName; Title = "Lrc Editor - " + dlg.FileName; LrcObject Lrc = new LrcObject(); LrcAdapter.ReadFromFile(ref Lrc, LrcPath); LrcHeaders = Lrc.LrcHeaders; DataRow dr = null; foreach (LrcLine line in Lrc.LrcLines) { dr = dt.NewRow(); dr[0] = Time2String(line.Time); dr[1] = line.Text; dt.Rows.Add(dr); } SetInfo.IsEnabled = true; } }
public static void ReadFromFile(ref LrcObject lrc, string path) { string pattern = @"((\[\d{1,2}\:\d{1,2}\.\d{2,3}\])|(\[\d{1,2}\:\d{1,2}\]))+"; using (StreamReader reader = new StreamReader(path)) { string temp; while ((temp = reader.ReadLine()) != null) { // 歌词 if (Regex.IsMatch(temp, pattern)) { foreach (LrcLine line in LrcLine.Pause(temp)) { lrc.LrcLines.Add(line); } } // 信息 else if (Regex.IsMatch(temp, LrcHeader.FormatString)) { LrcHeader header = LrcHeader.Pause(temp); lrc.LrcHeaders[(int)header.HeaderType].Text = header.Text; } // 其他则跳过 else { continue; } } } }
public void TestWriteMethod() { LrcObject lrc = new LrcObject(); lrc.LrcHeaders[(int)LrcHeader.Type.AR].Text = "AR"; lrc.LrcHeaders[(int)LrcHeader.Type.AL].Text = "AL"; lrc.LrcHeaders[(int)LrcHeader.Type.BY].Text = "BY"; lrc.LrcHeaders[(int)LrcHeader.Type.TI].Text = "TI"; lrc.LrcHeaders[(int)LrcHeader.Type.OFFSET].Text = "OFFSET"; lrc.LrcLines.Add(new LrcLine(new TimeSpan(0, 0, 0, 0, 0), "This is a test.")); LrcAdapter.WriteToFile(ref lrc, @"..\..\..\LrcLib\TestWrite.lrc"); }
private void FormatSaveFunc(string path) { // if (DataView.Items.Count == 0) return; List <LrcLine> Lines = new List <LrcLine>(); foreach (DataRow dr in dt.Rows) { Lines.Add(LrcLine.Pause("[" + dr[0] + "]" + dr[1])[0]); } LrcObject lrc = new LrcObject(); lrc.LrcHeaders = this.LrcHeaders; lrc.LrcLines = Lines; LrcAdapter.WriteToFile(ref lrc, path); }
public static void WriteToFile(ref LrcObject lrc, string path) { using (StreamWriter writer = new StreamWriter(path)) { foreach (LrcHeader header in lrc.LrcHeaders) { writer.WriteLine(header.ToString()); } foreach (LrcLine line in lrc.LrcLines) { writer.WriteLine(line.ToString()); } writer.Flush(); } }
public void TestReadMethod() { LrcObject lrc = new LrcObject(); LrcAdapter.ReadFromFile(ref lrc, @"..\..\..\LrcLib\TestRead.lrc"); Console.WriteLine("AR:\t{0}", lrc.LrcHeaders[(int)LrcHeader.Type.AR].Text); Console.WriteLine("AL:\t{0}", lrc.LrcHeaders[(int)LrcHeader.Type.AL].Text); Console.WriteLine("BY:\t{0}", lrc.LrcHeaders[(int)LrcHeader.Type.BY].Text); Console.WriteLine("TI:\t{0}", lrc.LrcHeaders[(int)LrcHeader.Type.TI].Text); Console.WriteLine("OFFSET:\t{0}", lrc.LrcHeaders[(int)LrcHeader.Type.OFFSET].Text); Console.WriteLine("Time\tText"); foreach (LrcLine line in lrc.LrcLines) { Console.WriteLine("{0}\t{1}", LrcLine.TimeToString(line.Time), line.Text); } }