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