C # образец соответствия - PullRequest
       8

C # образец соответствия

2 голосов
/ 17 февраля 2010

Я немного новичок в c #, я ищу шаблон для сопоставления строк, чтобы сделать следующее,

У меня есть такая строка

Книга будет показана на прием на Даунинг-стрит, дом 11 и примет участие в ключевых медицинских

Мне нужно создать тег span, чтобы выделить фрагменты текста, используя startIndex и длину,

для примера,

  1. startIndex = 3, длина = 10
  2. startIndex = 8, длина = 8

мне нужно динамически создать тег span, а также создать отдельный тег span для пересечений

в этом случае

The < span id= 'span1' color='blue'> book < /span> < span id='intersectionSpan' color= pink > will </ span> < span id '= span2' color = 'yellow' > be showcased </ span>

кто-нибудь сталкивался с любыми проблемами дизайна или улыбки

пожалуйста, совет

Ответы [ 3 ]

1 голос
/ 17 февраля 2010

Я не думаю, что это связано с шаблоном дизайна, но я бы посмотрел на то, что вы спросили, в качестве пользовательского элемента управления

как вы знаете, элемент управления меткой будет отображаться как диапазон, поэтому начните создавать новую пользовательскую метку элемента управления, например, наследовать ее от функций элемента управления метками и функций creta внутри него, чтобы принимать местоположения (начальный индекс и длину) и цвет (красный, желтый )

скажем, у нас есть эта функция внутри элемента управления

 private string AddSpan(string originalString, int[] location, string color)
    {
        string old = originalString.Substring(location[0], location[1]);
        string newStr = string.Format("<span id= '{0}' color='{1}'>", "idUWant", color);
        originalString = originalString.Replace(old, newStr);
        return originalString ; 
    }

Оригинальный текст: Книга будет демонстрироваться на приеме по Даунинг-стрит, дом 11 и примет участие в ключевых медицинских

расположение - простой двумерный массив целых чисел, первый будет начальным индексом, а второй - длиной, цветовой параметр - цветной строкой

я думаю, что лучше создать контейнер данных для параметров, например, класс, содержащий только несколько свойств, таких как startindex, length и color, чтобы было легче читать и поддерживать

0 голосов
/ 17 февраля 2010

вы можете использовать IndexOf

эта ссылка поможет вам: http://msdn.microsoft.com/en-us/library/ms228630%28VS.80%29.aspx

и если у вас есть startIndex и длина; Вы можете использовать подстроку просто, чтобы получить строку, которую вы хотите вставить в тег span.

0 голосов
/ 17 февраля 2010

Ну, я бы начал с коллекции "тегов". Они будут иметь начало и длину текста для тега. Тег также должен иметь возможность определить, находится ли определенная позиция в теге.

bool IsInTag(int position)

Оттуда просто перебрать строку. В каждой позиции сложите количество тегов в этой позиции. Если это больше, чем последняя позиция, начните новый тег, потому что новый тег пересек его. Если это меньше, закончите промежуток, так как пересечение только что закончилось. Сохраните номер для следующего цикла и повторите.

Это должно сделать это. Вы можете поиграть с этим, так как это было просто с моей головы.

...