上面方法是使用数组 下面是使用list 获取lrc 文件的,获取到后 就可以用上面的随便一种进行分割
//根据时间对数据排列
public string[] SortLyricArrayAndTimeArray (string[] lyricA, float[] timeA, out float[] timeArray) { for (int i = 0; i < timeA.Length - 1; i++) { for (int j = 0; j < timeA.Length - 1 - i; j++) { if (timeA [j] > timeA [j + 1]) { float temp = timeA [j]; timeA [j] = timeA [j + 1]; timeA [j + 1] = temp; string tempLyric = lyricA [j]; lyricA [j] = lyricA [j + 1]; lyricA [j + 1] = tempLyric; } } } timeArray = timeA; return lyricA; } //获取时间数组和 歌词数组 public string[] GetLyricArrayAndTimeArray (string lyricText, int length,int titleLength ,out float[] timeA,out string[] titleA) { timeA = new float[length]; string[] lyricArray = new string[length]; titleA = new string[titleLength]; int lyricIndex = 0; int titleIndex = 0; string[] lineArray = lyricText.Split ('\n');//根据分隔出行 for (int i = 0; i < lineArray.Length; i++) { string lineStr = lineArray [i]; if (lineStr.Contains ("ti") || lineStr.Contains ("ar") || lineStr.Contains ("al") || lineStr.Contains ("by") || lineStr.Contains ("offset")) {//标题 string[] array = lineStr.Split ('[',':',']'); float f; if (!float.TryParse (array [array.Length - 2],out f) && array [array.Length - 2]!= null) { titleA [titleIndex] = array [array.Length - 2]; titleIndex++; } } else {//歌词 string[] contentArray = lineStr.Split ('[', ']'); for (int j = contentArray.Length - 1; j >= 0; j--) { string subStr = contentArray [j]; string newSubStr = subStr.Replace (":", ""); float temp; if (float.TryParse(newSubStr,out temp)) { string[] time = subStr.Split (':'); float min; float.TryParse (time [0], out min); float sec; float.TryParse (time [1], out sec); subStr = string.Format ("{0}", (sec + 60 * min)); } float num = 0f; if (float.TryParse (subStr, out num)) { timeA [lyricIndex] = num; if (float.TryParse (contentArray [contentArray.Length - 1], out num)) { lyricArray [lyricIndex] = "空测试"; } else { lyricArray [lyricIndex] = contentArray [contentArray.Length - 1]; } lyricIndex++; } } } } return lyricArray; } //获取所有时间数组的长度 和标题的长度 public int GetLyricArrayLength (string lyricText,out int titleLenght) { int index = 0; int titleL = 0; string[] lineArray = lyricText.Split ('\n');//根据空格分隔出行 foreach (string lineStr in lineArray) { if (lineStr.Contains ("ti") || lineStr.Contains ("ar") || lineStr.Contains ("al") || lineStr.Contains ("by") || lineStr.Contains ("offset")) {//标题 titleL ++; } else {//歌词 string[] contentArray = lineStr.Split ('[', ']'); foreach (string subStr in contentArray) { string newStr = subStr.Replace (":", ""); float i = 0f; if (float.TryParse (newStr, out i)) { index++; } } } } titleLenght = titleL; return index; } //2 修改使用list================================================================= //获取时间数组和 歌词数组 public List<string> GetLyricListAndTimeList(string lyricText ,out List<float> timeA,out List<string> titleA) { List<string> lyricArray = new List<string> (); timeA = new List<float>(); titleA = new List<string>(); string[] lineArray = lyricText.Split ('\n');//根据分隔出行 for (int i = 0; i < lineArray.Length; i++) { string lineStr = lineArray [i]; if (lineStr.Contains ("ti") || lineStr.Contains ("ar") || lineStr.Contains ("al") || lineStr.Contains ("by") || lineStr.Contains ("offset")) {//标题 string[] array = lineStr.Split ('[',':',']'); float f; if (!float.TryParse (array [array.Length - 2],out f) && array [array.Length - 2]!= null) { titleA.Add( array [array.Length - 2]); } } else {//歌词 string[] contentArray = lineStr.Split ('[', ']'); for (int j = contentArray.Length - 1; j >= 0; j--) { string subStr = contentArray [j]; string newSubStr = subStr.Replace (":", ""); float temp; if (float.TryParse(newSubStr,out temp)) { string[] time = subStr.Split (':'); float min; float.TryParse (time [0], out min); float sec; float.TryParse (time [1], out sec); subStr = string.Format ("{0}", (sec + 60 * min)); } float num = 0f; if (float.TryParse (subStr, out num)) { timeA.Add(num); if (float.TryParse (contentArray [contentArray.Length - 1], out num)) { lyricArray.Add(""); } else { lyricArray.Add(contentArray [contentArray.Length - 1]); } } } } } return lyricArray; } public List<string> SortLyricListAndTimeList (List<string> lyricA, List<float> timeA, out List<float> timeArray) { for (int i = 0; i < timeA.Count - 1; i++) { for (int j = 0; j < timeA.Count - 1 - i; j++) { if (timeA [j] > timeA [j + 1]) { float temp = timeA [j]; timeA [j] = timeA [j + 1]; timeA [j + 1] = temp; string tempLyric = lyricA [j]; lyricA [j] = lyricA [j + 1]; lyricA [j + 1] = tempLyric; } } } timeArray = timeA; return lyricA; } //读取lrc歌词文件 public void GetLrcFile(string file){ StreamReader sr = new StreamReader(file, Encoding.Default); string str = sr.ReadToEnd(); print (str); }