Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Regex.Replace Добавлено: 10.11.08 07:22  

Автор вопроса:  Фeнягz | Web-сайт: atauenis.narod.ru
Делаю библиотеку для html-разметки кода.

http://igorr.110mb.com/dll_vbcodeformatter.html

Не вышло сделать замену чисел при помощи Regex.Replace на html-код. Теги содержат информацию о цвете (числа то есть), и благополучно заменяют цифры тегов html.

Есть специалисты по регулярным выражениям?

Ответить

  Ответы Всего ответов: 9  

Номер ответа: 1
Автор ответа:
 BG(Алексей)



Вопросов: 26
Ответов: 295
 Профиль | | #1 Добавлено: 10.11.08 19:56
http://vbnet.ru/forum/show.aspx?id=176262

Ответить

Номер ответа: 2
Автор ответа:
 BG(Алексей)



Вопросов: 26
Ответов: 295
 Профиль | | #2 Добавлено: 10.11.08 19:56
May it help.

Ответить

Номер ответа: 3
Автор ответа:
 Skywalker



ICQ: 300-70-6пятьЪ 

Вопросов: 62
Ответов: 545
 Web-сайт: iSkywalker.ru
 Профиль | | #3
Добавлено: 10.11.08 21:55
а почему бы не делать СНАЧАЛА замену цифр, когда еще остального html кода нет, а потом всего остального?

Ответить

Номер ответа: 4
Автор ответа:
 Фeнягz



Вопросов: 2
Ответов: 62
 Web-сайт: atauenis.narod.ru
 Профиль | | #4
Добавлено: 11.11.08 01:06
Но тогда там будут < = > / # & в тегах html а для из замены я использую обычный Replace для строк.

Ответить

Номер ответа: 5
Автор ответа:
 Фeнягz



Вопросов: 2
Ответов: 62
 Web-сайт: atauenis.narod.ru
 Профиль | | #5
Добавлено: 11.11.08 01:08
May be.

Ответить

Номер ответа: 6
Автор ответа:
 Skywalker



ICQ: 300-70-6пятьЪ 

Вопросов: 62
Ответов: 545
 Web-сайт: iSkywalker.ru
 Профиль | | #6
Добавлено: 11.11.08 02:02
6 раз прочитал сообщение, но так и не понял, что там написано

Ответить

Номер ответа: 7
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #7
Добавлено: 11.11.08 02:11
Зачем вообще такие сложности? Сделай таблицу стилей, в именах классов чтоб цифр не было. И все. Подключаешь потом к странице, ну и форматируешь код тегами <span class='digit'></span> или <div clacc='keyword'></div>. У меня вот тут на форуме как раз так подсветка организована. Погляди исходный код страницы вот в этом месте:
  1. Function CreateProcessAsUser(ByVal UserName As String, ByVal Domain As String, ByVal Password As String, ByVal CommandLine As String) As Long
  2.     Dim hToken As Long
  3.     Dim SI As STARTUPINFO
  4.     Dim PI As PROCESS_INFORMATION
  5.     SI.cb = Len(SI)
  6.     CreateProcessAsUser = INVALID_HANDLE_VALUE
  7.     If Not LogonUser(UserName, Domain, Password, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, hToken) Then Stop 'Exit Function
  8.     Debug.Print Err.LastDllError
  9.     If Not CreateProcessAsUserA(hToken, vbNullString, CommandLine, ByVal 0&, ByVal 0&, False, NORMAL_PRIORITY_CLASS, ByVal 0&, ByVal 0&, SI, PI) Then Exit Function
  10.     CreateProcessAsUser = PI.hProcess
  11. End Function

Ответить

Номер ответа: 8
Автор ответа:
 Фeнягz



Вопросов: 2
Ответов: 62
 Web-сайт: atauenis.narod.ru
 Профиль | | #8
Добавлено: 11.11.08 02:56
Skywalker пишет:
6 раз прочитал сообщение, но так и не понял, что там написано


Говорю, при написании подглядывал сюда. Взял откудато на codeproject.com

Но там форматирование реализовано очень поверхностно и меня это не удовлетворило.

  1. using System;
  2. using System.Web;
  3. using System.Text;
  4. using System.Text.RegularExpressions;
  5. using System.Collections;
  6. using System.Data;
  7. using System.IO;
  8.  
  9. namespace CodeFormatter
  10. {
  11. public class FontStyle
  12. {
  13. public string Style = null;
  14. public FontStyle() {}
  15. public FontStyle(string Style)
  16. {
  17. this.Style = Style;
  18. }
  19. public string BeginTag
  20. {
  21. get
  22. {
  23. return "<font" +
  24. (string)((Style != null) ? " " + Style + ">" : ">");
  25. }
  26. }
  27. public string EndTag
  28. {
  29. get
  30. {
  31. return "</font>";
  32. }
  33. }
  34. }
  35. public class PageStyle
  36. {
  37. public FontStyle Font = new FontStyle("color=\"black\" face=\"Courier New\" size=\"2\"");
  38. public string Style = null;
  39. public PageStyle() {}
  40. public PageStyle(string Style)
  41. {
  42. this.Style = Style;
  43. }
  44. public string BeginTag
  45. {
  46. get
  47. {
  48. return "<table" +
  49. (string)((Style != null) ? " " + Style + ">" : ">") +
  50. "<tr><td><pre>" + Font.BeginTag;
  51. }
  52. }
  53. public string EndTag
  54. {
  55. get
  56. {
  57. return Font.EndTag + "</pre></td></tr></table>";
  58. }
  59. }
  60. }
  61. public class CodeToHTML
  62. {
  63. public class CodeStyle
  64. {
  65. public PageStyle Page = new PageStyle();
  66. public FontStyle Comment = new FontStyle("color=\"green\"");
  67. public FontStyle Keyword = new FontStyle("color=\"blue\"");
  68. public FontStyle XmlTag = new FontStyle("color=\"maroon\"");
  69. public CodeStyle() {}
  70. }
  71. private bool showFileName = false;
  72. private string language = "";
  73. private CodeStyle codeStyle = new CodeStyle();
  74. public CodeStyle Style
  75. {
  76. get
  77. {
  78. return codeStyle;
  79. }
  80. set
  81. {
  82. codeStyle = value;
  83. }
  84. }
  85. private int tabSize = 4;
  86. public int TabSize
  87. {
  88. get
  89. {
  90. return tabSize;
  91. }
  92. set
  93. {
  94. tabSize = value;
  95. }
  96. }
  97. public bool ShowFileName
  98. {
  99. get
  100. {
  101. return showFileName;
  102. }
  103. set
  104. {
  105. showFileName = value;
  106. }
  107. }
  108. public string Language
  109. {
  110. get
  111. {
  112. return language;
  113. }
  114. set
  115. {
  116. language = value;
  117. }
  118. }
  119. private void SetLanguageFromFileName(string filePath)
  120. {
  121. // Find the current language from the file extension
  122. FileInfo info = new FileInfo(filePath);
  123. string fileExt = info.Extension.ToLower().Trim(new char[]{'.'});
  124. switch(fileExt)
  125. {
  126. case ProgrammingLanguage.VB:
  127. language = ProgrammingLanguage.VB;
  128. break;
  129. case ProgrammingLanguage.CSharp:
  130. language = ProgrammingLanguage.CSharp;
  131. break;
  132. case ProgrammingLanguage.JSharp:
  133. language = ProgrammingLanguage.JSharp;
  134. break;
  135. }
  136. }
  137. public string RenderFile(string filePath)
  138. {
  139. // errors?
  140. this.SetLanguageFromFileName(filePath);
  141. return Render(File.OpenText(filePath));
  142. }
  143. public void RenderFile(string filePath, string outputFilePath)
  144. {
  145. // Render and throw error
  146. this.SetLanguageFromFileName(filePath);
  147. StreamWriter writer = new StreamWriter(outputFilePath);
  148. writer.Write(Render(File.OpenText(filePath)));
  149. writer.Flush();
  150. writer.Close();
  151. }
  152. public string RetabAndTrim(string inputString)
  153. {
  154. string tab = "";
  155. for(int i = 0; i < tabSize; i++)
  156. {
  157. tab += " ";
  158. }
  159. StringBuilder builder = new StringBuilder();
  160. StringWriter writer = new StringWriter(builder);
  161. // Split into a string array for processing
  162. inputString = inputString.Replace("\r\n", "\r");
  163. inputString = inputString.Replace("\n\r", "\r");
  164. string[] lines = inputString.Split(new char[]{'\r'});
  165. foreach(string line in lines)
  166. {
  167. string output = line;
  168. output = output.TrimEnd(new char[]{'\n','\r',' '});
  169. output = output.Replace(tab, "\t");
  170. output = output.TrimStart(new char[]{' '});
  171. writer.WriteLine(output);
  172. }
  173. writer.Flush();
  174. return writer.ToString();
  175. }
  176. public void RetabAndTrimFile(string filePath, string outputFilePath)
  177. {
  178. StreamReader reader = File.OpenText(filePath);
  179. string output = this.RetabAndTrim(reader.ReadToEnd());
  180. reader.Close();
  181. StreamWriter writer = new StreamWriter(outputFilePath);
  182. writer.Write(output);
  183. writer.Flush();
  184. writer.Close();
  185. }
  186. public string Render(StreamReader textReader)
  187. {
  188. return Render(textReader.ReadToEnd());
  189. }
  190. public string Render(string inputString)
  191. {
  192. string tab = "";
  193. for(int i = 0; i < tabSize; i++)
  194. {
  195. tab += " ";
  196. }
  197. StringBuilder builder = new StringBuilder();
  198. StringWriter writer = new StringWriter(builder);
  199. // Split into a string array for processing
  200. inputString = inputString.Replace("\r\n", "\r");
  201. inputString = inputString.Replace("\n\r", "\r");
  202. inputString = inputString.Replace("\t", tab);
  203. string[] lines = inputString.Split(new char[]{'\r'});
  204. // Process the language
  205. switch(language.Trim().ToLower())
  206. {
  207. case ProgrammingLanguage.CSharp:
  208. writer.Write(codeStyle.Page.BeginTag);
  209. foreach(string line in lines)
  210. {
  211. writer.WriteLine(this.FixCSLine(line));
  212. }
  213. writer.Write(codeStyle.Page.EndTag);
  214. break;
  215. case ProgrammingLanguage.JSharp:
  216. writer.Write(codeStyle.Page.BeginTag);
  217. foreach(string line in lines)
  218. {
  219. writer.WriteLine(this.FixJSLine(line));
  220. }
  221. writer.Write(codeStyle.Page.EndTag);
  222. break;
  223. case ProgrammingLanguage.VB:
  224. writer.Write(codeStyle.Page.BeginTag);
  225. foreach(string line in lines)
  226. {
  227. writer.WriteLine(this.FixVBLine(line));
  228. }
  229. writer.Write(codeStyle.Page.EndTag);
  230. break;
  231. default:
  232. bool isInScriptBlock = false;
  233. bool isInMultiLine = false;
  234. writer.Write(codeStyle.Page.BeginTag);
  235. foreach(string line in lines)
  236. {
  237. language = this.GetLanguageFromLine(line, language);
  238. if(this.IsScriptBlockTagStart(line))
  239. {
  240. writer.WriteLine(this.FixASPXLine(line));
  241. isInScriptBlock = true;
  242. }
  243. else
  244. {
  245. if(this.IsScriptBlockTagEnd(line))
  246. {
  247. writer.WriteLine(this.FixASPXLine(line));
  248. isInScriptBlock = false;
  249. }
  250. else
  251. {
  252. if(this.IsMultiLineTagStart(line) &
  253. isInMultiLine == false)
  254. {
  255. writer.Write("<font color=blue><b>" +
  256. HttpUtility.HtmlEncode(line));
  257. isInMultiLine = true;
  258. }
  259. else
  260. {
  261. if(this.IsMultiLineTagEnd(line)
  262. & isInMultiLine == true)
  263. {
  264. writer.Write(HttpUtility.HtmlEncode(line) +
  265. "</b></font>");
  266. isInMultiLine = false;
  267. }
  268. else
  269. {
  270. if(isInMultiLine)
  271. {
  272. writer.Write(HttpUtility.HtmlEncode(line));
  273. }
  274. else
  275. {
  276. if(isInScriptBlock)
  277. {
  278. switch(language.Trim().ToLower())
  279. {
  280. case ProgrammingLanguage.CSharp:
  281. writer.WriteLine(this.FixCSLine(line));
  282. break;
  283. case ProgrammingLanguage.JSharp:
  284. writer.WriteLine(this.FixJSLine(line));
  285. break;
  286. case ProgrammingLanguage.VB:
  287. writer.WriteLine(this.FixVBLine(line));
  288. break;
  289. default:
  290. writer.WriteLine(this.FixVBLine(line));
  291. break;
  292. }
  293. }
  294. else
  295. {
  296. writer.WriteLine(this.FixASPXLine(line));
  297. }
  298. }
  299. }
  300. }
  301. }
  302. }
  303. }
  304. writer.Write(codeStyle.Page.EndTag);
  305. // aspx-page sorted out
  306. break;
  307. }
  308. writer.Flush();
  309. return writer.ToString();
  310. }
  311. private string GetLanguageFromLine(string line, string defaultLang)
  312. {
  313. // Returns name of the language
  314. string returnString = defaultLang;
  315. if(line.Length == 0)
  316. {
  317. return returnString;
  318. }
  319. Match langMatch = Regex.Match(line,
  320. @"(?i)<%@\s*Page\s*.*Language\s*=\s*""(?<lang>[^""]+)""");
  321. if(langMatch.Success)
  322. {
  323. returnString = langMatch.Groups["lang"].ToString();
  324. }
  325. langMatch = Regex.Match(line,
  326. @"(?i)(?=.*runat\s*=\s*""?server""?)" +
  327. @"<script.*language\s*=\s*""(?<lang>[^""]+)"".*>");
  328. if(langMatch.Success)
  329. {
  330. returnString = langMatch.Groups["lang"].ToString();
  331. }
  332. langMatch = Regex.Match(line,
  333. @"(?i)<%@\s*WebService\s*.*Language\s*=\s*""?(?<lang>[^""]+)""?" );
  334. if(langMatch.Success)
  335. {
  336. returnString = langMatch.Groups["lang"].ToString();
  337. }
  338. // "CS" instead of "C#" ?
  339. if(returnString == "CS")
  340. {
  341. returnString = ProgrammingLanguage.CSharp;
  342. }
  343. return returnString;
  344. }
  345. private string FixCSLine(string line)
  346. {
  347. string outLine = line;
  348. if(line.Length == 0)
  349. {
  350. return line;
  351. }
  352. outLine = Regex.Replace(line, @"(?i)(\t)", " ");
  353. outLine = HttpUtility.HtmlEncode(outLine);
  354. string[] keywords =
  355. {
  356. "private", "protected", "public", "namespace", "class",
  357. "break", "for", "if", "else", "while", "switch", "case",
  358. "using", "return", "null", "void", "int", "bool", "string",
  359. "float", "this", "new", "true", "false", "const", "static", "base",
  360. "foreach", "in", "try", "catch", "get", "set", "char", "default"
  361. };
  362. string combinedKeywords = "(?<keyword>" + string.Join("|", keywords) + ")";
  363. outLine = Regex.Replace(outLine,
  364. @"\b" + combinedKeywords + @"\b(?<!//.*)",
  365. codeStyle.Keyword.BeginTag + "${keyword}" + codeStyle.Keyword.EndTag);
  366. outLine = Regex.Replace(outLine,
  367. "(?<comment>//.*$)",
  368. codeStyle.Comment.BeginTag + "${comment}" + codeStyle.Comment.EndTag);
  369. return outLine;
  370. }
  371. private string FixJSLine(string line)
  372. {
  373. string outLine = line;
  374. if(line.Length == 0)
  375. {
  376. return line;
  377. }
  378. outLine = Regex.Replace(line, @"(?i)(\t)", " ");
  379. outLine = HttpUtility.HtmlEncode(outLine);
  380. string[] keywords =
  381. {
  382. "private", "protected", "public", "namespace", "class",
  383. "var", "for", "if", "else", "while", "switch", "case",
  384. "using", "get", "return", "null", "void", "int", "string",
  385. "float", "this", "set", "new", "true", "false", "const",
  386. "static", "package", "function", "internal", "extends",
  387. "super", "import", "default", "break", "try", "catch", "finally"
  388. };
  389. string combinedKeywords = "(?<keyword>" + string.Join("|", keywords) + ")";
  390. outLine = Regex.Replace(outLine,
  391. @"\b" + combinedKeywords + @"\b(?<!//.*)",
  392. codeStyle.Keyword.BeginTag + "${keyword}" + codeStyle.Keyword.EndTag);
  393. outLine = Regex.Replace(outLine,
  394. "(?<comment>//.*$)",
  395. codeStyle.Comment.BeginTag + "${comment}" + codeStyle.Comment.EndTag);
  396. return outLine;
  397. }
  398. private string FixVBLine(string line)
  399. {
  400. string outLine = line;
  401. if(line.Length == 0)
  402. {
  403. return line;
  404. }
  405. outLine = Regex.Replace(line, @"(?i)(\t)", " ");
  406. outLine = HttpUtility.HtmlEncode(outLine);
  407. string[] keywords =
  408. {
  409. "AddressOf", "Delegate", "Optional", "ByVal", "ByRef", "Decimal",
  410. "Boolean", "Option", "Compare", "Binary", "Text", "On", "Off",
  411. "Explicit", "Strict", "Private", "Protected", "Public", "End Namespace",
  412. "Namespace", "End Class", "Exit", "Class", "Goto", "Try", "Catch",
  413. "End Try", "For", "End If", "If", "Else", "ElseIf", "Next", "While",
  414. "And", "Do", "Loop", "Dim", "As", "End Select", "Select", "Case", "Or",
  415. "Imports", "Then", "Integer", "Long", "String", "Overloads", "True",
  416. "Overrides", "End Property", "End Sub", "End Function", "Sub", "Me",
  417. "Function", "End Get", "End Set", "Get", "Friend", "Inherits",
  418. "Implements", "Return", "Not", "New", "Shared", "Nothing", "Finally",
  419. "False", "Me", "My", "MyBase", "End Enum", "Enum" };
  420. string combinedKeywords = "(?<keyword>" + string.Join("|", keywords) + ")";
  421. outLine = Regex.Replace(outLine,
  422. @"(?i)\b" + combinedKeywords + @"\b(?<!'.*)",
  423. codeStyle.Keyword.BeginTag + "${keyword}" + codeStyle.Keyword.EndTag);
  424. outLine = Regex.Replace(outLine,
  425. "(?<comment>'(?![^']*&quot;).*$)",
  426. codeStyle.Comment.BeginTag + "${comment}" + codeStyle.Comment.EndTag);
  427. return outLine;
  428. }
  429. private string FixASPXLine(string line)
  430. {
  431. string outLine = line;
  432. string searchExp = null;
  433. string replaceExp = null;
  434. if(line.Length == 0)
  435. {
  436. return line;
  437. }
  438. // Search for \t and replace it with 4 spaces
  439. outLine = Regex.Replace(outLine, @"(?i)(\t)", " ");
  440. outLine = HttpUtility.HtmlEncode(outLine);
  441. // Single line comment or #include references.
  442. searchExp = "(?i)(?<a>(^.*))(?<b>(&lt;!--))(?<c>(.*))(?<d>(--&gt;))(?<e>(.*))";
  443. replaceExp = "${a}" + codeStyle.Comment.BeginTag +
  444. "${b}${c}${d}" + codeStyle.Comment.EndTag + "${e}";
  445. if(Regex.IsMatch(outLine, searchExp))
  446. {
  447. outLine = Regex.Replace(outLine, searchExp, replaceExp);
  448. }
  449. // Colorize <%@ <type>
  450. searchExp = "(?i)" + "(?<a>(&lt;%@))" + "(?<b>(.*))" + "(?<c>(%&gt;))";
  451. replaceExp = "<font color=blue><b>${a}${b}${c}</b></font>";
  452. if(Regex.IsMatch(outLine, searchExp))
  453. {
  454. outLine = Regex.Replace(outLine, searchExp, replaceExp);
  455. }
  456. // Colorize <%# <type>
  457. searchExp = "(?i)" + "(?<a>(&lt;%#))" + "(?<b>(.*))" + "(?<c>(%&gt;))";
  458. replaceExp = "${a}" + "<font color=red><b>" + "${b}" + "</b></font>" + "${c}";
  459. if(Regex.IsMatch(outLine, searchExp))
  460. {
  461. outLine = Regex.Replace(outLine, searchExp, replaceExp);
  462. }
  463. // Colorize tag <type>
  464. searchExp =
  465. "(?i)" +
  466. "(?<a>(&lt;)(?!%)(?!/?asp:)(?!/?template)(?!/?property)(?!/?ibuyspy:)(/|!)?)" +
  467. @"(?<b>[^;\s&]+)" + @"(?<c>(\s|&gt;|\Z))";
  468. replaceExp = "${a}" +
  469. codeStyle.XmlTag.BeginTag + "${b}" + codeStyle.XmlTag.EndTag + "${c}";
  470. if(Regex.IsMatch(outLine, searchExp))
  471. {
  472. outLine = Regex.Replace(outLine, searchExp, replaceExp);
  473. }
  474. // Colorize asp:|template for runat=server tags <type>
  475. searchExp = "(?i)(?<a>&lt;/?)(?<b>(asp:|template|property|IBuySpy:).*)(?<c>&gt;)?";
  476. replaceExp = "${a}" + codeStyle.Keyword.BeginTag + "<b>${b}</b>" +
  477. codeStyle.Keyword.EndTag + "${c}";
  478. if(Regex.IsMatch( outLine, searchExp))
  479. {
  480. outLine = Regex.Replace(outLine, searchExp, replaceExp);
  481. }
  482. // Colorize begin of tag char(s) "<","</","<%"
  483. searchExp = "(?i)(?<a>(&lt;)(/|!|%)?)";
  484. replaceExp = codeStyle.Keyword.BeginTag + "${a}" + codeStyle.Keyword.EndTag;
  485. if(Regex.IsMatch( outLine, searchExp))
  486. {
  487. outLine = Regex.Replace(outLine, searchExp, replaceExp);
  488. }
  489. // Colorize end of tag char(s) ">","/>"
  490. searchExp = "(?i)(?<a>(/|%)?(&gt;))";
  491. replaceExp = codeStyle.Keyword.BeginTag + "${a}" + codeStyle.Keyword.EndTag;
  492. if(Regex.IsMatch( outLine, searchExp))
  493. {
  494. outLine = Regex.Replace(outLine, searchExp, replaceExp);
  495. }
  496. return outLine;
  497. }
  498. private bool IsScriptBlockTagStart(string line)
  499. {
  500. bool returnCode = false;
  501. if(Regex.IsMatch(line, @"<script.*runat=""?server""?.*>"))
  502. {
  503. returnCode = true;
  504. }
  505. else
  506. {
  507. if(Regex.IsMatch(line, @"(?i)<%@\s*WebService"))
  508. {
  509. returnCode = true;
  510. }
  511. }
  512. return returnCode;
  513. }
  514. private bool IsScriptBlockTagEnd(string line)
  515. {
  516. bool returnCode = false;
  517. if(Regex.IsMatch(line, "</script.*>"))
  518. {
  519. returnCode = true;
  520. }
  521. return returnCode;
  522. }
  523. private bool IsMultiLineTagStart(string line)
  524. {
  525. bool returnCode = false;
  526. string outLine = null;
  527. string searchExp =
  528. "(?i)(?!.*&gt;)(?<a>&lt;/?)(?<b>(asp:|template|property|IBuySpy:).*)";
  529. outLine = HttpUtility.HtmlEncode( line );
  530. if(Regex.IsMatch(outLine, searchExp))
  531. {
  532. returnCode = true;
  533. }
  534. return returnCode;
  535. }
  536. private bool IsMultiLineTagEnd(string line)
  537. {
  538. bool returnCode = false;
  539. string outLine = null;
  540. string searchExp = "(?i)&gt;";
  541. outLine = HttpUtility.HtmlEncode(line);
  542. if(Regex.IsMatch( outLine, searchExp))
  543. {
  544. returnCode = true;
  545. }
  546. return returnCode;
  547. }
  548. private class ProgrammingLanguage
  549. {
  550. public const string VB = "vb";
  551. public const string CSharp = "cs";
  552. public const string JSharp = "js";
  553. }
  554. public static void Test(string inputFilePath, string outputFilePath,
  555. int tabSize, CodeToHTML.CodeStyle style)
  556. {
  557. CodeToHTML converter = new CodeToHTML();
  558. converter.TabSize = tabSize;
  559. converter.Style = style;
  560. FileInfo fi = new FileInfo(inputFilePath);
  561. string tempFileName = fi.Name;
  562. fi = new FileInfo(outputFilePath);
  563. string tempFixedFilePath = fi.FullName.Replace(fi.Name, "") +
  564. tempFileName;
  565. converter.RetabAndTrimFile(inputFilePath, tempFixedFilePath);
  566. converter.RenderFile(tempFixedFilePath, outputFilePath);
  567. }
  568. }
  569. }


Executioner пишет:
У меня вот тут на форуме как раз так подсветка организована.


Ну, цифры форматируются как обычный текст. Однако это ж ориентировано на отображение, а у меня на генерацию html.

Ответить

Номер ответа: 9
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #9
Добавлено: 11.11.08 12:17
Ну, как знаешь. Просто где этот HTML будут юзать, как не в браузере?) А в браузере можно и стили подключить.
Пиши все значения в тегах в одинарных кавычках и соответствующим образом состевь регэкспы.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам