我希望这有资格作为一个编程问题,就像在任何编程教程中一样,你最终会在代码示例中遇到'foo'.(是的,对吧?)
'foo'到底意味着什么?
如果它意味着什么都没有,它何时开始被使用呢?
可能重复:
如何在.NET中替换字符串的第一个实例?
假设我有字符串:
string s = "Hello world.";
Run Code Online (Sandbox Code Playgroud)
我怎么能替换第一个o在这个词Hello的假设Foo?
换句话说,我想最终得到:
"HellFoo world."
Run Code Online (Sandbox Code Playgroud)
我知道如何更换所有o,但我想更换第一个
我正在尝试创建一个通用的格式化程序/解析器组合.
示例场景:
var format = "{0}-{1}"var arr = new[] { "asdf", "qwer" }var res = string.Format(format, arr)我想要做的是将格式化的字符串恢复回对象(字符串)数组.像(伪代码)的东西:
var arr2 = string.Unformat(format, res)
// when: res = "asdf-qwer"
// arr2 should be equal to arr
Run Code Online (Sandbox Code Playgroud)
有没有经验做过这样的事情?我正在考虑使用正则表达式(修改原始格式字符串,然后将其传递给Regex.Matches以获取数组)并为格式字符串中的每个占位符运行它.这是可行的还是还有其他更有效的解决方案?
我尝试编写一种文化感知字符串替换方法:
public static string Replace(string text, string oldValue, string newValue)
{
int index = text.IndexOf(oldValue, StringComparison.CurrentCulture);
return index >= 0
? text.Substring(0, index) + newValue + text.Substring(index + oldValue.Length)
: text;
}
Run Code Online (Sandbox Code Playgroud)
但是,它在Unicode组合字符上窒息:
// \u0301 is Combining Acute Accent
Console.WriteLine(Replace("déf", "é", "o")); // 1. CORRECT: dof
Console.WriteLine(Replace("déf", "e\u0301", "o")); // 2. INCORRECT: do
Console.WriteLine(Replace("de\u0301f", "é", "o")); // 3. INCORRECT: do?f
Run Code Online (Sandbox Code Playgroud)
为了修复我的代码,我需要知道在第二个例子中,String.IndexOf只匹配一个字符(é),即使它搜索了两个(e\u0301).同样,我需要知道在第三个例子中,String.IndexOf匹配两个字符(e\u0301),即使它只搜索了一个(é).
如何确定匹配的子字符串的实际长度String.IndexOf?
注意:执行Unicode规范化text和 …
在一个字符串中,我试图用不同的值更新同一个单词的多个实例.
这是一个过于简化的示例,但给出以下字符串:
"The first car I saw was color, the second car was color and the third car was color"
Run Code Online (Sandbox Code Playgroud)
我要用"红色"替换单词颜色的第一个实例,第二个实例应为"绿色",第三个实例应为"蓝色".
我想要尝试的是一个正则表达式模式来查找已结合的单词,通过循环进行交互并一次替换一个.请参阅下面的示例代码.
var colors = new List<string>{ "reg", "green", "blue" };
var sentence = "The first car I saw was color, the second car was color and the third car was color";
foreach(var color in colors)
{
var regex = new Regex("(\b[color]+\b)");
sentence = regex.Replace(sentence, color, 1);
}
Run Code Online (Sandbox Code Playgroud)
但是,"颜色"一词永远不会被适当的颜色名称取代.我找不到我做错了什么.
我有一个字符串,
string ij = "/alwaysSame09102012/myThing.aspx?asdasd=99&Urasdl=scashdasdeasdmeasds/tasdigaesdr1/gasdoasdveasdasdrnaasdancasde/eamsdeasdetiasdasdnagsds/tasidgeasdr1masdeetasdasd11180,/reasdMeasdetMe2as0d1asd0/asrdganasdiseasdasdgeasdetasdiasdngaasdsd.aasdspafsxasdffas?asdsdlaieasdnedtfe=asdsafaser1meafswedfhfdget111ertert80"
Run Code Online (Sandbox Code Playgroud)
现在我只需要用"always2013forever"更改第一个"alwaysSame09102012".
我知道我可以做这样的事情,
string ij = "/alwaysSame09102012/myThing.aspx?asdasd=99&Urasdl=scashdasdeasdmeasds/tasdigaesdr1/gasdoasdveasdasdrnaasdancasde/eamsdeasdetiasdasdnagsds/tasidgeasdr1masdeetasdasd11180,/reasdMeasdetMe2as0d1asd0/asrdganasdiseasdasdgeasdetasdiasdngaasdsd.aasdspafsxasdffas?asdsdlaieasdnedtfe=asdsafaser1meafswedfhfdget111ertert80"
string[] c = ij.split['/'];
string finalString = ij.replace( "/" + c[0] + "/", "/" + "always2013forever" + "/");
Run Code Online (Sandbox Code Playgroud)
这是我的逻辑,但没有工作,请帮助,
只有我的字符串中的常量是 "/alwaysSame09102012/"我需要替换的
更新
**
**
我有这个代码:
string a = "**MustbeReplaced**asdgasfsff**MustbeReplaced**asdfafasfsa";
//MustbeReplaced should be Replaced1, Replaced2, and so on
a = a.Replace("MustbeReplaced", "Replaced");
Run Code Online (Sandbox Code Playgroud)
每次有字符串替换时,我想用动态值替换它.例如,上面字符串的输出应该是:
"**Replaced1**asdgasfsff**Replaced2**asdfafasfsa"
Run Code Online (Sandbox Code Playgroud)
我知道String.Replace,但据我所知,它只适用于静态String替换.
有没有办法做到这一点?
我有如下字符串变量
string pctSign = "\0\0\0";
Run Code Online (Sandbox Code Playgroud)
我想用“%”替换前两个字符
i.e. Final o/p:- pctSign="%\0\0";
Run Code Online (Sandbox Code Playgroud)
如何用String.Replace做到这一点?
我正在尝试使用正则表达式在C#字符串中查找并替换双引号的所有实例,但似乎无法理解答案,这是我到目前为止所拥有的:
private string checkEscapeChars(string s)
{
s = Regex.Replace(s, @"[""]", String.Empty);
return s;
}
Run Code Online (Sandbox Code Playgroud)
现在,运行正常,但我可以说我有一个字符串"这是我的"样本字符串"
我想摆脱"之前的样本.上面的工作会不会这样?或者它会找到并替换匹配双引号的所有实例,而不是单个双引号?
我有一个字符串"{Day} - 是胜利日.{Day} - 是我的生日";
如何用不同的数字替换{Day}?我尝试:
string text = "{Day} - is a victory day. {Day} - is my birthday";
if (text.Contains("{Day}"))
text = text.Replace("{Day}", xNet.Rand.Next(1, 30).ToString());
Run Code Online (Sandbox Code Playgroud)
但是在2次替换中,日子是相同的.