小编Har*_*rag的帖子

匹配和替换

我有一个长字符串,该字符串中我有以下文字:

"formatter": "SomeInformationHere"
Run Code Online (Sandbox Code Playgroud)

我需要在长字符串中找到上面的文本并删除SomeInformationHere周围的双引号,所以结果如下所示,但是"formatter"这个词的引号必须保留.

"formatter": SomeInformationHere
Run Code Online (Sandbox Code Playgroud)

我尝试了下面的,找到了字符串,但我不知道如何只更换值SomeInformationHere周围的引号:

string pattern = "\"formatter\": ([\"]).*([\"])";
Match match = Regex.Match(myString, pattern, RegexOptions.IgnoreCase);
//Replace text in "myString" here
myString = ?????
//Output match value:
Response.Write(match.Value);
Run Code Online (Sandbox Code Playgroud)

编辑:哦,我忘了提到上面的模式可能不止一次在"mystring"中,并且所有人都需要替换它们.


编辑2:

我已经看过正则表达式测试站点(感谢链接)并粘贴在我的测试字符串和正则表达式模式中,它似乎可以工作,但当我将相同的模式放入点网时,替换似乎工作为如果选择了"单行"选项.以下是我用过的代码.

  1. 字符串 - 请注意,这不包含任何回车符 - 它是一个从XML文件构建的长字符串.格式化以提高可读性.

    {
            "chart": {
                    "borderRadius": 15,
                    "borderWidth": 1,
                    "renderTo": "ChartContainer1",
                    "type": "pie"
            },
            "credits": {
                    "enabled": false
            },
            "labels": {
                    "items": [{
                            "html": "Label 1",
                            "style": {
                                    "left": "10px",
                                    "top": "30px"
                            }
                    }, {
                            "html": "Label …
    Run Code Online (Sandbox Code Playgroud)

c# regex

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

JQuery,选择第一行表

我已经使用JQuery将"图像"按钮添加到表格中的几行.我使用了以下代码:

$("#tblResults tr:nth-child(1) td.ResultsHeader span.gridRCHders").each(function(){
    var cat = $.trim($(this).text());
    if(cat.length > 0){
        if(cat.toLowerCase() != "total"){
            options.xAxis.categories.push(cat);
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

它基本上遍历表的第一行,并将单元格的值存储在categories数组中.我正在对现有网站进行更改,因此无法真正更改表格布局.

我注意到的是在某些页面上,显示了多个表格,我的图像按钮被正确添加,但我需要更改的是上面的代码来读取图像所在表格的第一行...我已经尝试了以下但它似乎没有工作:

$("img.ChartButton").click(function(){
    var currentTable = $(this).closest("tr").closest("table").filter("tr:nth-child(1) td.ResultsHeader span.gridRCHders");

    options.xAxis.categories = [];
    currentTable.each(function(){
        var cat = $.trim($(this).text());
        if(cat.length > 0){
            if(cat.toLowerCase() != "total"){
                options.xAxis.categories.push(cat);
            }
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

任何帮助都会很棒.谢谢

H

编辑:请在下面找到其中一个表的副本,如第2行所示,我有一个"ChartButton"图像,这可以是从2开始的任何一行,它们可以在表中不止一个.我需要做的是当单击图像时,读入当前表的第一行中的数据(它们可能是页面上的多个表)并将其保存到类别数组中(参见上面的代码).希望这可以帮助.

 <table cellspacing="1" cellpadding="2" border="0" class="whiteBorder">
    <tbody>
        <tr>
            <td width="40" valign="bottom" align="left" class="ResultsHeader" colspan="1" rowspan="1"><span class="gridRCHders">&nbsp;</span></td>
            <td width="40" valign="bottom" align="left" class="ResultsHeader" colspan="1" rowspan="1"><span class="gridRCHders">Jan</span></td>
            <td width="40" valign="bottom" align="left" class="ResultsHeader" colspan="1" rowspan="1"><span …
Run Code Online (Sandbox Code Playgroud)

html javascript jquery

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

检测KeyUp事件中的密钥

我在表单上有一个文本框,我正在尝试检测用户键入的键.TextBox是多行的,带有wordwrap.我不希望用户按下回车键(因为我希望所有文本都在一行输入,包装)所以我使用了以下代码:

private void txtPlain_KeyPress(object sender, KeyPressEventArgs e) {
    if (e.KeyChar == (char)13) {
        MessageBox.Show("Enter keys are not allowed");
        e.KeyChar = (char)0;
    }
}
Run Code Online (Sandbox Code Playgroud)

这在我的测试中运行良好,但是当我测试CTRL + ENTER时它不起作用,因为我不知道如何检测控制键.从我的谷歌搜索我发现我需要使用KeyUp/Down事件,所以我现在有以下代码:

private void txtPlain_KeyUp(object sender, KeyEventArgs e) {
    //if (e.KeyData == (Keys.Control | Keys.Enter)) {

    if (e.KeyCode == Keys.Enter || (e.KeyCode == Keys.Enter && e.Control)) {            
        MessageBox.Show("Enter keys are not allowed:");
        //e.KeyValue = Keys.None;
    }
}
Run Code Online (Sandbox Code Playgroud)

第一个注释掉的行由于某种原因没有用,所以如果有人能解释为什么这会有用.

KeyUp/Down事件的问题在于我不知道如何从文本中删除回车键 - 与KeyPress事件不同,我可以将KeyChar设置为零.该事件捕获Enter和Ctrl + Enter键,但光标仍然转到TextBox中的下一行.

感谢您的帮助.

.net c# textbox keyevent winforms

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

在C#中读/写文本文件进度条

我有一个函数,它读取一个大文本文件,拆分一个部分(从给定的开始和结束),并将拆分的数据保存到另一个文本文件.因为文件太大,我需要在读取流时添加进度条将分割文本写入另一个文件时另一个.Ps.start和end给出datetime !!

using (StreamReader sr = new StreamReader(file,System.Text.Encoding.ASCII))
{
    while (sr.EndOfStream == false)
    {
        line = sr.ReadLine();

        if (line.IndexOf(start) != -1)
        {
            using (StreamWriter sw = new StreamWriter(DateTime.Now.ToString().Replace("/", "-").Replace(":", "-") + "cut"))
            {
                sw.WriteLine(line);
                while (sr.EndOfStream == false && line.IndexOf(end) == -1)
                {
                    line = sr.ReadLine();
                    sw.WriteLine(line);
                }
            }

            richTextBox1.Text += "done ..." + "\n";
            break;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c# winforms progress-bar

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

绘制窗体上的透明控件

使用 C# WinForms 我有一个表单,我正在它上面绘制从浅蓝色到深蓝色的渐变背景。我有一些按钮和几个标签,我已经尝试将背景颜色设置为透明,因为我希望背景显示出来 - 特别是对于标签,但这似乎不起作用。

但我注意到,即使代码仅在 form_paint 事件上,绘画也在给标签带来痛苦。

如何使标签不包含相同等级的阴影,而是透明?例如,表单顶部的标签是浅蓝色,而底部的标签是深蓝色。

private void frmOptions_Paint(object sender, PaintEventArgs e)
{
    e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
    Rectangle rectangle = e.ClipRectangle;

    using (Brush aBrush = new LinearGradientBrush(rectangle, Color.LightBlue, Color.DarkBlue, LinearGradientMode.Vertical))
    {
        e.Graphics.FillRectangle(aBrush, rectangle);
    }
}
Run Code Online (Sandbox Code Playgroud)

非常感谢您对此的任何帮助。

编辑: 我刚刚逐步调试代码行并注意到正在为表单上的每个对象调用绘制事件 - 标签和按钮,上面第 2 行的矩形具有每次的大小。所以我现在真的很困惑为什么它会被表单上的每个对象调用。

编辑 2: 刚刚逐步完成我的快速测试项目的代码(请参阅下面的评论),并且还注意到正在为每个对象调用 Paint 事件。不同之处在于测试项目没有“ Rectangle rectangle = e.ClipRectangle;”行- 它基本上使用表单的宽度和高度。我上面的代码将矩形设置为 ClipRectangle - 这是每个标签和按钮的大小......这是正常行为吗?如果是这样,那么看起来我需要遵循 Reniuz 下面的答案。

编辑 3 我已将 cliprectangle 线更改为“ Rectangle rectangle = new Rectangle(0, 0, this.Width, this.Height);”,这似乎使透明外观看起来应该如何,但是仍然为表单上的每个对象调用 Paint 事件 - …

c# gdi winforms

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

标签 统计

c# ×4

winforms ×3

.net ×1

gdi ×1

html ×1

javascript ×1

jquery ×1

keyevent ×1

progress-bar ×1

regex ×1

textbox ×1