使用Regex提取句子的最后一个字符

时间:2010-07-15 10:57:52

标签: c# xml regex dom

我想提取字符串的最后一个字符。事实上,我应该用例子说清楚。以下是我想要提取的字符串:

<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 个答案:

答案 0 :(得分:1)

在这里查看一些Linq to XML示例,而不是使用Regex。

答案 1 :(得分:1)

使用Linq to XML,您可以按照以下方式执行此操作:

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

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

您可以在加载

中使用流,阅读器等代替文件

答案 2 :(得分:0)

或许像以下那样?

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

解决方案假定句子介于><之间,且长度为一个或多个字符。

句子是否真的在XML中,或者您是否使用任何XML或DOM方法提取它?例如,使用这个:

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

如果是这样,如果字符串是独立的,那么你可以这样做,这样更简单,更安全:

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

编辑:我最初错过如果没有空位,上面的帖子会使用此信息进行编辑