C#替换双引号内的文本

C#替换双引号内的文本,c#,C#,这是我在这个论坛上的第一篇帖子。我有双精度文本,我想用另一个文本替换它 这是我的全文 “运营指标~铜C1现金成本(美元/磅)-Lalor~9999”*“运营指标~加拿大元(加拿大元/美元)~9999” 此文本“运营指标~铜C1现金成本(美元/磅)-Lalor~9999”将替换为excel单元格地址A10 我尝试过这种方法,但无法替换双引号内的文本。我的代码中肯定有我无法修复的问题 string mainstr = "\"" + "Operational M

这是我在这个论坛上的第一篇帖子。我有双精度文本,我想用另一个文本替换它

这是我的全文

“运营指标~铜C1现金成本(美元/磅)-Lalor~9999”*“运营指标~加拿大元(加拿大元/美元)~9999”

此文本“运营指标~铜C1现金成本(美元/磅)-Lalor~9999”将替换为excel单元格地址A10

我尝试过这种方法,但无法替换双引号内的文本。我的代码中肯定有我无法修复的问题

string mainstr = "\"" + "Operational Metrics~Copper C1 Cash Costs (US$/lb) - Lalor~9999" + "\"" + "*" + "\"" + "Operational Metrics~Canadian Dollars (Canadian $/US$)~9999" + "\"";
string replacesfrom = "\"" + "Operational Metrics~Copper C1 Cash Costs (US$/lb) - Lalor~9999" + "\"";
string replacesto = "A10";
string afterreplace = Regex.Replace(mainstr, replacesfrom, replacesto);
所需输出将为。

"A10"*"Operational Metrics~Canadian Dollars (Canadian $/US$)"
我也尝试过这个逻辑,但还是没有成功

public static string ReplaceWholeWord(this string original, string wordToFind, string replacement, RegexOptions regexOptions = RegexOptions.None)
        {
            string pattern = String.Format(@"\b{0}\b", wordToFind);
            string ret = Regex.Replace(original, pattern, replacement, regexOptions);
            return ret;
        }
使用上述功能,我尝试替换,但不幸的是无法将文本运营指标~COPER C1现金成本(美元/磅)-Lalor替换为A10


请建议在我的上述代码中更改什么。

首先,您不需要字符串中的“+”示例:

string replacesfrom = "\"" + "Operational Metrics~Copper C1 Cash Costs (US$/lb) - Lalor" + "\"";
可以是:

string replacesfrom = "\"Operational Metrics~Copper C1 Cash Costs (US$/lb) - Lalor\"";
我能理解的是,这是你需要的,来取代:

string afterreplace = mainstr.Replace(replacesfrom, replacesto)

要获取单元格地址,如果您不知道如何操作,则应该这样做:

Regex.Replace与String.Replace的工作方式不同。 使用


如果您非常想使用正则表达式,请继续阅读。如果没有,请参阅


问题在于,您使用的是无格式的正则表达式特殊字符,即
$
/

您当前的正则表达式是
operation Metrics~铜C1现金成本(US$/lb)-Lalor~9999
包含特殊字符(),基本上
表示捕获组,
$
表示字符串的结尾。这意味着我们必须用
\
逃离他们。这意味着您的正则表达式(
replacesfrom
)现在

@“运营指标~铜C1现金成本\(US\$\/lb\)-Lalor~9999”“


是一个dotnetfiddle显示它可以工作

这里不需要正则表达式,因为您只是在替换一个静态子字符串<代码>字符串。替换就足够了。如果你必须使用正则表达式,你需要知道括号、美元和正斜杠字符有特殊的含义,需要转义。+1,比我不必要使用正则表达式的答案更好。。。还有一个指向dotnetfiddle的链接,显示此工作替换可能会产生问题。我需要用双引号替换文本。假设有“Z1”+“Z12”这样的文本,replace将用A10替换Z1。然后输出将是“A10”+“A102”,这就是为什么我不使用replace函数。我需要找出双引号替换中的文本。替换功能可能在一段时间内不起作用并产生问题。谢谢您的帮助。我怎样才能像您在文本中硬编码的方式转义所有特殊字符,即
string replacesfrom=@““运营指标~铜C1现金成本\(US\$\/lb\)-Lalor~9999”“$应替换为\$\?括号应替换为(&)?否。正则表达式中的转义与普通字符串中的转义相同,只是一个
\`后跟要转义的字符。即
\“`在字符串中转义
,在正则表达式中转义
\$
。我只使用了逐字字符串(
@“…”
),因此不必转义转义(\)字符。我分别转义了字符
$
/
,和
我如何能拥有我将调用以替换所有特殊字符的通用例程。请建议一个代码示例或任何指导我替换特殊字符的链接。感谢谷歌的快速搜索让我受益匪浅
string afterreplace = mainstr.Replace(replacesfrom, replacesto);