我想提取字符串的最后一个字符。事实上,我应该用例子说清楚。以下是我想要提取的字符串:
<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>
”之间插入空格。
谢谢,
答案 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 ");
编辑:我最初错过如果没有空位,上面的帖子会使用此信息进行编辑