2016-11-14 2 views
-2

В настоящее время я пытаюсь добавить пользовательские подсказки в качестве расширения моей Visual Studio.Заменить значение словаря NewLine

Однако, при наведении над ключевым словом (потому что у меня очень длинные описания, я пытался использовать \ r \ n, но он явно не работает и будет отображаться как \ r \ n в подсказке инструмента, так что я использовал)

//var reader = new StreamReader(File.OpenRead(@"C:\xx\QuickInfo.csv")); 
/*while (!reader.EndOfStream) 
    { 
     var line = reader.ReadLine(); 
     var values = line.Split(','); 
     //add in values in position 0 and 1 
     m_dictionary.Add(values[0], values[1].Replace("<br>", Environment.NewLine)); 
    }*/ 

пространство

internal class VCLToolTipSource: IQuickInfoSource 
{ 
    private VCLToolTipSourceProvider m_provider; 
    private ITextBuffer m_subjectBuffer; 
    private Dictionary<string, string> m_dictionary; 
    public VCLToolTipSource(VCLToolTipSourceProvider provider, ITextBuffer subjectBuffer) 
    { 
     m_provider = provider; 
     m_subjectBuffer = subjectBuffer; 

     m_dictionary = new Dictionary<string, string>(); 

     //CSV for Quick Info 
     //var reader = new StreamReader(File.OpenRead(@"C:\xx\QuickInfo.csv")); 
     //For going through CSV positions 0,1// 
     /*while (!reader.EndOfStream) 
     { 
      var line = reader.ReadLine(); 
      var values = line.Split(','); 
      //add in values in position 0 and 1 
      m_dictionary.Add(values[0], values[1].Replace("<br>", Environment.NewLine)); 
     }*/ 

     //List of all tool tips// 


     m_dictionary.Add("keyword", "value"); 
     m_dictionary.Add("adapt", " - Process given file <br>Syntax: #adapt[(-samelevel|-continue|-samelevel-continue|-copy)][:] path [output-folder] [output-file](vcl-command)*[#endadapt]<br>Variations:<br><br> -samelevel : The scope of the adapted file will be raised to the current level which makes it possible to override variables<br> -continue : If the adaptable file is not found continue processing. (warning message instead of stop processing with error)<br>Note: #adapt-continue will open the file and process it. Unlike #adapt-copy.<br> -copy : Instead of processing the file"); 

который должен заменить все "< бр>" с Environment.Newline, чтобы сократить его.

Однако теперь, когда я не хочу использовать файл CSV для импорта данных, как я читать данные из словаря и заменить < бр> с Newline ??

Спасибо

+0

Вы хотите, чтобы все значение было заменено на новую строку? или только
тег? –

+0

Когда отмечен
, я хочу новую строку. –

ответ

1

Возможно, это больше похоже на то, что вы хотите сделать?

m_dictionary = m_dictionary.ToDictionary(
           k => k.Key, 
           v => v.Value.Replace("<br>", Environment.NewLine)); 

Это будет пройти через весь словарь и заменить "<br>" значения с Environment.NewLine.

+0

Привет, да, это действительно близко, но оно по-прежнему выглядит как
): –

+0

@leonardchan Я протестировал этот код, прежде чем отправил ответ, и я подтверждаю, что он работает так, как должен. Вы уверены, что правильно смотрите результат? – Abion47

+0

Привет @ Abion47 хорошо, мне плохо, что-то не сработало с перезагрузкой визуальной студии. Использование вашего метода работает лучше всего и является самым простым. –

0

ли вы пытались добавить yourstring.Replace ("<br>", Environment.NewLine) в конце строки.

m_dictionary 
    .Add("adapt", 
     " - Process given file <br>Syntax: #adapt[(-samelevel|-continue|-samelevel-continue|-copy)][:] path [output-folder] [output-file](vcl-command)*[#endadapt]<br>Variations:<br><br> -samelevel : The scope of the adapted file will be raised to the current level which makes it possible to override variables<br> -continue : If the adaptable file is not found continue processing. (warning message instead of stop processing with error)<br>Note: #adapt-continue will open the file and process it. Unlike #adapt-copy.<br> -copy : Instead of processing the file" 
    .Replace("<br>", Environment.NewLine)); 
0

Заменить "<br>" с Environment.NewLine или \n

Код:

string str = " - Process given file <br>Syntax: #adapt[(-samelevel|-continue|-samelevel-continue|-copy)][:] path [output-folder] [output-file](vcl-command)*[#endadapt]<br>Variations:<br><br> -samelevel : The scope of the adapted file will be raised to the current level which makes it possible to override variables<br> -continue : If the adaptable file is not found continue processing. (warning message instead of stop processing with error)<br>Note: #adapt-continue will open the file and process it. Unlike #adapt-copy.<br> -copy : Instead of processing the file"; 
    str = str.Replace("<br>", Environment.NewLine); 

или

str = str.Replace("<br>", "\n"); 

Выход:. - Процесс данный файл
Синтаксис: #adapt [(- samelevel | -Продолжить | -samelevel-продолжить | -копию)] [:] путь [выход папка] выходного файла * [# endadapt] Варианты:

-samelevel: Область адаптированного файла будет поднят до текущего уровня, что позволит переопределить переменные -continue: если адаптивный файл не найден, продолжите обработку. (предупреждающее сообщение вместо остановки обработки с ошибкой) Примечание: # adapt-continue откроет файл и обработает его. В отличие от # adapt-copy. -copy: вместо обработки файла

Хотя мой ответ выше в идеальных случаях, но вы должны покрыть все случаи.

public string ReplaceBRwithNewline(string txtVal) 
{ 
    string newText = ""; 
    // Create Regex  
    System.Text.RegularExpressions.Regex regex = 
     new System.Text.RegularExpressions.Regex(@"(<br />|<br/>|</ br>|</br>)"); 
    // Replace new line with <br/> tag  
    newText = regex.Replace(txtVal, "\r\n"); 
    // Result  
    return newText; 
} 

Я здесь с заменой \r\n, потому что в некоторых браузерах он работает с \n и на некоторых она работает с \r\n.

+0

Но у меня есть словарь, это набор элементов словаря, которые нужно добавить. m_dictionary.add ("keyword," value ") –

+0

вы можете сделать это путем foreach loop для всех значений в словаре –

+0

, но знаете ли вы, как использовать m_dictionary.Add (значения [0], значения [1] .Replace («
», Environment.NewLine), вместо этого? «Environment.Newline» Я попытался сделать так, но не смог заменить? –

Смежные вопросы