Извлечение последнего символа предложения с использованием регулярных выражений - PullRequest
0 голосов
/ 15 июля 2010

Я хочу извлечь последний символ строки.На самом деле я должен пояснить с примером.Ниже приведена строка, из которой я хочу извлечь:

<spara h-align="right" bgcolor="none" type="verse" id="1" pnum="1">
    <line>
        <emphasis type="italic">Approaches to Teaching and Learning</emphasis>
    </line>
</spara>

В приведенной выше строке я хочу вставить пробел между словами «Learning» и «</emphasis>», если пробела нет.

Спасибо,

Ответы [ 3 ]

1 голос
/ 15 июля 2010

С Linq to XML вы можете сделать это следующим образом:

XDocument doc = XDocument.Load("xmlfilename");

foreach (var emphasis in doc.Descendants("emphasis"))
{
      if (emphasis.Value.Last() != ' ')
         emphasis.Value += " ";
}
doc.Save("outputfilename");

Вместо файлов вы можете использовать потоки, программы чтения и т. Д. В Load

1 голос
/ 15 июля 2010

Посмотрите здесь некоторые примеры Linq to XML вместо использования Regex.

0 голосов
/ 15 июля 2010

Что-то вроде следующего возможно?

Regex.Replace(yourString, @"(>[^<]+[^ ])<", @"$1 <");

Решение предполагает, что предложение находится в диапазоне от > до < и имеет длину один или несколько символов.

Действительно ли предложение внутри XML, или вы извлекли его, используя любой из многих методов XML или DOM? Например, используя это:

foreach(node in YourDOM.SelectNodes("//emphasis[@type='italic']"))
{
    string yourString = node.FirstChild.Value;
}

Если это так, если строка сама по себе, вы можете сделать это вместо этого, что намного проще и безопаснее:

Regex.Replace(yourString, "([^ ])$", "$1 "); 

РЕДАКТИРОВАТЬ: Я изначально пропустил , если нет места , пост выше редактируется с этой информацией

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...