字符串.取代工作在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不工作,但它意味着代码实际上可以编译。

其他字符串也是如此。替换问题:字符串。替换(或其他字符串修改)不工作,看起来它们实际上会编译,而我的则不会。

字符串.取代工作在VB,但不是c#

LastIndexOf返回整数,而不是字符串。Replacestring, 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期望stringchar作为第一个参数。我不知道VB解释为什么你的代码工作,但我可以解释,在c#中,你不能传递integer,而stringchar是预期的。

在c#中,这将做你想做的:

strLine = strLine.Replace(',', ''); 

希望对你有帮助。

可以使用String.Remove

strLine = strLine.Remove(strLine.LastIndexOf(','), 1);