2017-01-11 94 views
-1

我要讓這樣的文字:過濾詞和數字文本文件

203 
00:16:38,731 --> 00:16:41,325 
Happy Christmas. 
your arse I pray God it's our last. 

是這樣的變量:

Int section : 203 
String start_time : 00:16:38,731 
String end_time : 00:16:41,325 
String Content : 
Happy Christmas. 
your arse I pray God it's our last. 

在我的搜索,我發現使用正則表達式,但我不能使用它。這就是我發現它可以幫助理解我的意思:

Regex unit = new Regex(@"(?<sequence>\d+)\r\n(?<start>\d{2}\:\d{2}\:\d{2},\d{3}) --\> " + @"(?<end>\d{2}\:\d{2}\:\d{2},\d{3})\r\n(?<text>[\s\S]*?\r\n\r\n)", RegexOptions.Compiled | RegexOptions.ECMAScript); 

這應該與字幕文件升 我怎麼做工作?

謝謝:)

+0

嘗試'VAR解析度= unit.Replace(S,「內部部分:$ {序列} \ nString START_TIME:$ {開始} \ nString END_TIME :$ {end} \ nString Content:\ n $ {text}「);' –

回答

0

嘗試以下操作:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Text.RegularExpressions; 

namespace ConsoleApplication41 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string input = 
       "Int section : 203\n" + 
       "String start_time : 00:16:38,731\n" + 
       "String end_time : 00:16:41,325\n" + 
       "String Content :\n" + 
       "Happy Christmas.\n" + 
       "your arse I pray God it's our last.\n"; 

      string pattern = 
       @"Int section :\s+(?'section'\d+)\s+" + 
       @"String start_time :\s+(?'start'[\d:,]+)\s+" + 
       @"String end_time :\s+(?'end'[\d:,]+)\s+" + 
       @"String Content :(?'content'[^$]+)"; 

      Match match = Regex.Match(input, pattern, RegexOptions.Multiline); 
      Console.WriteLine(match.Groups["section"].Value.Trim()); 
      Console.WriteLine("{0} --> {1}", match.Groups["start"].Value.Trim(), match.Groups["end"].Value.Trim()); 
      Console.WriteLine(match.Groups["content"].Value.Trim()); 
      Console.ReadLine(); 
     } 
    } 

} 
+0

感謝您的時間..但您的輸入與我的不同......我有字幕文件..這項工作與單詞的部分..我的文字必須是這樣的:203 00:16:38,731 - > 00:16:41,325 聖誕快樂。 你的屁股我祈禱上帝這是我們的最後一次。 –

+0

它看起來像是有時間的空間,因此:[\ d :,]到:[\ d \ s:,] – jdweng

+0

謝謝你激勵我解決它 –