我对某些包含引号的入站邮件有特定的问题(例如),的-Hertogenbosch ,并且我需要转义第一个引号,因为我无法将整个节点集注入到DataBase ..谁能告诉我解决方案,如何才能忽略该引号?。或简要地说,除了第一和最后一条,我如何才能动态地在每个入站消息中自动转义不必要的引号。
我尝试了translate($ InboundMessage,'“',”(blankspace)“),它工作正常,但是删除了所有引号。.我需要保留第一个和最后一个..例如,我的入站消息是>
“去年我访问了's-Hertogenbosch'。。单引号是有害的,因为在输出中我得到了'我访问过的去年',而没有城市的名称。
解决方案?
致谢。
答案 0 :(得分:2)
尝试使用此表达式。...
<xsl:value-of select="replace($InboundMessage, '(.)"+(.)', '$1$2')"/>
或者,如果您想使用双引号...
<xsl:value-of select='concat(substring($InboundMessage, 1, 1), translate(substring($InboundMessage, 2, string-length($InboundMessage) - 2), "'", ""), substring($InboundMessage, string-length($InboundMessage)))'/>
编辑:如果只能使用XSLT1.0和XPATH 1.0,则必须进行一些字符串操作
<xsl:value-of select='concat("INSERT INTO ", $Destination, " (", $Column, ") VALUES ('", translate($InboundMessage, "'", ""), "')")'/>
或者,鉴于您对构建SQL的评论,您可以替换所有的撇号,然后将外部的撇号放回所构建的SQL字符串中
private void PrintMousePos(int x, int y, MouseEventArgs e)
{
PointF[] location = { new PointF(x, y) };
inverseTransform.TransformPoints(location);
if (NewPolygon != null)
{
// We are already drawing a polygon.
// If it's the right mouse button, finish this polygon.
if (e.Button == MouseButtons.Right)
{
// Finish this polygon.
if (NewPolygon.Count > 2) Polygons.Add(NewPolygon);
NewPolygon = null;
}
else
{
// Add a point to this polygon.
if (NewPolygon[NewPolygon.Count - 1] != Location)
{
NewPolygon.Add(location[0]);
}
}
}
else
{
// Start a new polygon.
NewPolygon = new List<PointF>();
NewPoint = Location;
NewPolygon.Add(location[0]);
}
// Redraw.
picCanvas.Invalidate();
}