小编dis*_*rax的帖子

C#String.Replace双引号和文字

我对c#很新,所以这就是我在这里问的原因.

我正在使用一个返回长字符串XML值的Web服务.因为这是一个字符串,所有属性都转义了双引号

string xmlSample = "<root><item att1=\"value\" att2=\"value2\" /></root>"
Run Code Online (Sandbox Code Playgroud)

这是我的问题.我想做一个简单的string.replace.如果我在PHP中工作,我只需要运行strip_slashes().

但是,我在C#,我不能为我的生活弄清楚.我不能写出我的表达式来替换双引号("),因为它终止了字符串.如果我逃避它,那么它的结果不正确.我做错了什么?

    string search = "\\\"";
    string replace = "\"";
    Regex rgx = new Regex(search);
    string strip = rgx.Replace(xmlSample, replace);

    //Actual Result  <root><item att1=value att2=value2 /></root>
    //Desired Result <root><item att1="value" att2="value2" /></root>
Run Code Online (Sandbox Code Playgroud)

MizardX:要在原始字符串中包含引号,您需要将其加倍.

这是重要的信息,现在尝试这种方法......没有运气.这里有双引号发生的事情.你们所建议的概念都是可靠的,但这里的问题是处理双引号,看起来我需要做一些额外的研究来解决这个问题.如果有人想出一些东西请发一个答案.

string newC = xmlSample.Replace("\\\"", "\"");
//Result <root><item att=\"value\" att2=\"value2\" /></root> 

string newC = xmlSample.Replace("\"", "'");
//Result newC   "<root><item att='value' att2='value2' /></root>"
Run Code Online (Sandbox Code Playgroud)

c# xml

16
推荐指数
1
解决办法
7万
查看次数

你如何确保WPF从内存中释放大型BitmapSource?

系统:Windows XP SP3,.NET 3.5,4GB RAM,双1.6gHz

我有一个WPF应用程序加载和转换(使用Storyboard动画)非常大的PNG.这些PNG的分辨率为8190x1080.当应用程序运行时,它似乎缓存图像,系统内存缓慢爬升.最终它会阻塞系统并抛出OutOfMemoryException.

以下是我目前正在尝试解决此问题的步骤:

1)我从应用程序中删除BitmapSource对象

2)我在加载BitmapSource时将BitmapSource BitmapCacheOption设置为None

3)我在加载后冻结BitmapSource.

4)我将删除对使用源的Image的所有引用以及对源本身的任何引用.

5)完成上述步骤后,手动调用GC.Collect().

希望找出为什么WPF挂在这些映像的内存上,以及确保用于加载它们的内存得到正确恢复的可能解决方案.

wpf memory-leaks bitmap bitmapsource

14
推荐指数
1
解决办法
1万
查看次数

基于DateTime属性C#,XPath对XML节点进行排序

我有一个看起来像这样的XML结构.

<sales>
  <item name="Games" sku="MIC28306200" iCat="28" 
     sTime="11/26/2008 8:41:12 AM" 
     price="1.00" desc="Item Name" />
  <item name="Games" sku="MIC28307100" iCat="28" 
     sTime="11/26/2008 8:42:12 AM" 
     price="1.00" desc="Item Name" />
...
</sales>
Run Code Online (Sandbox Code Playgroud)

我试图找到一种方法来根据sTime属性SORT节点,这是一个DateTime.ToString()值.诀窍是我需要保持节点的机智,由于某种原因,我找不到办法做到这一点.我很确定LINQ和XPath有办法做到这一点,但我被卡住了,因为我似乎无法根据DateTime.ToString()值进行排序.

XPathDocument saleResults = new XPathDocument(@"temp/salesData.xml");
XPathNavigator navigator = saleResults.CreateNavigator();

XPathExpression selectExpression = navigator.Compile("sales/item/@sTime");
selectExpression.AddSort("@sTime", 
    XmlSortOrder.Descending, 
    XmlCaseOrder.None, 
    "", 
    XmlDataType.Number);

XPathNodeIterator nodeIterator = navigator.Select(selectExpression);

while( nodeIterator.MoveNext() )
    {
         string checkMe = nodeIterator.Current.Value;
    } 
Run Code Online (Sandbox Code Playgroud)

我还需要维护一个指向NODE的指针来检索其他属性的值.

也许这并不像我想的那么简单.

谢谢.

解决方案:这是我最终使用的内容.获取所选答案和IComparable类,这就是我如何根据sTime属性对XML节点进行排序,然后将所有属性放入相应的Arrays中以便稍后使用.

    XPathDocument saleResults = new XPathDocument(@"temp/salesData.xml");
    XPathNavigator navigator = saleResults.CreateNavigator();
    XPathExpression selectExpression = navigator.Compile("sales/item");
    XPathExpression sortExpr = navigator.Compile("@sTime"); …
Run Code Online (Sandbox Code Playgroud)

c# xml sorting xpath

7
推荐指数
2
解决办法
2万
查看次数

DispatcherTimer随着时间的推移消耗CPU导致WPF视觉无法正确呈现

我有一个WPF应用程序,它使用DispatcherTimer更新时钟滴答.

但是,在我的应用程序运行约6小时后,时钟指针角度不再变化.我已经验证DispatcherTimer仍在使用Debug触发,并且角度值仍在更新,但屏幕渲染不反映更改.

我还验证了使用WPFPerf工具Visual Profiler,未标记时间,Tick(时间管理器)和AnimatedRenderMessageHandler(媒体内容)都在逐渐增长,直到消耗了近80%的CPU,但内存运行稳定.

hHandRT.Angle是对RotateTransform的引用

hHandRT = new RotateTransform(_hAngle);
Run Code Online (Sandbox Code Playgroud)

此代码可以完美地运行大约5个小时的直接运行但在此之后它会延迟并且角度变化不会呈现给屏幕.有关如何解决此问题的任何建议或您可能知道的任何可能的解决方案.

.NET 3.5,Windows Vista SP1或Windows XP SP3(两者都显示相同的行为)

编辑:添加时钟节拍功能

//In Constructor
...
_dt = new DispatcherTimer();
_dt.Interval = new TimeSpan(0, 0, 1);
_dt.Tick += new EventHandler(Clock_Tick);
...

 private void Clock_Tick(object sender, EventArgs e)
        {

            DateTime startTime = DateTime.UtcNow;
            TimeZoneInfo tst = TimeZoneInfo.FindSystemTimeZoneById(_timeZoneId);
            _now = TimeZoneInfo.ConvertTime(startTime, TimeZoneInfo.Utc, tst);
            int hoursInMinutes = _now.Hour * 60 + _now.Minute;
            int minutesInSeconds = _now.Minute * 60 + _now.Second;
            _hAngle = (double)hoursInMinutes * 360 / 720;
            _mAngle = …
Run Code Online (Sandbox Code Playgroud)

c# wpf cpu dispatchertimer

5
推荐指数
1
解决办法
6577
查看次数

如何从字符串中提取所有数字(如int)?C#

我有一个长字符串,我想循环遍历它并按顺序提取所有int值.这看起来很简单,但我似乎无法弄明白.

string raw = "I am a string and I have some numbers 3 45 333 2 39 inside of me 1839 9303, and I'd like to get these numbers into 9 -10 00  9e09 into a string[] or something else";

int[] justNumbers = raw.?????
Run Code Online (Sandbox Code Playgroud)

使用C#.NET 3.5并在必要时访问Regex和Linq.谢谢.

最终结果将是一长串的整数.即

List<int> numbers = new List<int>();
Run Code Online (Sandbox Code Playgroud)

我最终使用了什么(不是最有效,但工作)

#region mysolution
        numbers = new List<int>();
        foreach (char item in raw)
        {
            if (item.ToString() == "0")
            {
                numbers.Add(Convert.ToInt32(item.ToString()));
            }
            else if (item.ToString() == "1")
            {
                numbers.Add(Convert.ToInt32(item.ToString())); …
Run Code Online (Sandbox Code Playgroud)

c# regex string

4
推荐指数
2
解决办法
1274
查看次数

Flash CS5崩溃损坏的文件.如何将我的xml库资源恢复为新的FLA?

我开始使用Flash CS5(它很糟糕,但今天不是我的问题).我花了很多时间研究.FLA文件.保存,因为我去了一点点Flash CS5在保存期间崩溃..fla文件现在已损坏.新的.fla格式本质上是一个.zip文件.所以我能够将文件名更改为*.zip并在其中进行探索.DOMDocument.xml文件已损坏且已死.DOMDocument.xml是时间轴,因此我的所有展示位置和动画都消失了.但是,我的LIBRARY文件夹是完整的,并且我的所有库项目都是*.xml文件.

我想知道是否有人知道如何将这些库项目放到另一个.fla文件中,这样我就不会失去我的所有工作?

我已经尝试创建一个新的.fla文件并将LIBRARY文件夹拖到新的.fla中,但是当我在Flash CS5 IDE中加载新的.fla时,我的库项目不显示.

任何和所有的帮助将不胜感激.

flash file-recovery flash-cs5

3
推荐指数
1
解决办法
1万
查看次数

在WPF/C#中显示时区.发现夏令时抵消

我无法理解系统注册表如何帮助我将DateTime对象转换为相应的TimeZone.我有一个例子,我一直在尝试进行逆向工程,但我根本不能按照夏令时来跟踪UTCtime偏移的一个关键步骤.

我正在使用.NET 3.5(感谢上帝),但它仍然令我困惑.

谢谢

编辑:附加信息:此问题用于WPF应用程序环境.我在下面留下的代码片段将答案示例更进一步,以获得我正在寻找的内容.

c# wpf timezone datetime

2
推荐指数
1
解决办法
8046
查看次数