字符串.取代工作在VB,但不是c#
本文关键字:VB 取代 工作 字符串 | 更新日期: 2023-09-27 18:11:57
下面的VB代码工作正常,没有标记任何错误。
strLine = strLine.Replace(strLine.LastIndexOf(","), "")
但是同样的c#代码没有:
strLine = strLine.Replace(strLine.LastIndexOf(","), "");
不会编译'string. replace (string,string)'的最佳重载方法有一些无效参数。
为什么这个工作在VB而不是在c# ?我该怎么解决这个问题?
我认为它可能类似于c#字符串。Replace不工作,但它意味着代码实际上可以编译。
其他字符串也是如此。替换问题:字符串。替换(或其他字符串修改)不工作,看起来它们实际上会编译,而我的则不会。
LastIndexOf
返回整数,而不是字符串。Replace
以string, string
为参数,您传递给它的是int, string
,因此异常The best overloaded method for 'string.Replace(string,string)' has some invalid arguements.
如果你只是想删除所有的,
使用这个:
strLine = strLine.Replace(",", "");
根据你的代码,你可能只想替换,
的最后一个实例,所以如果这是你想要的,试试这个:
StringBuilder sb = new StringBuilder(strLine);
sb[strLine.LastIndexOf(",")] = "";
strLine = sb.ToString();
阅读文档时,我惊讶于第一个示例居然能正常工作。字符串。Replace应该接收一对字符或一对字符串,而不是一个整数,然后是一个字符串。也许VB版本是将整数转换为其字符表示自动?
在c#中。Replace的第一个参数必须是char或string,但您使用的是整数(string)。LastIndexOf返回一个整数)。为什么不直接使用:
strLine = strLine.Replace(',', '');
试试下面的
string.Replace("," , "");
在c#中,LastIndexOf
返回int
,但Replace
期望string
或char
作为第一个参数。我不知道VB解释为什么你的代码工作,但我可以解释,在c#中,你不能传递integer
,而string
或char
是预期的。
在c#中,这将做你想做的:
strLine = strLine.Replace(',', '');
希望对你有帮助。
可以使用String.Remove
strLine = strLine.Remove(strLine.LastIndexOf(','), 1);