需要帮助 'string.endswith(string)' 的最佳重载方法匹配有一些无效参数

Posted

技术标签:

【中文标题】需要帮助 \'string.endswith(string)\' 的最佳重载方法匹配有一些无效参数【英文标题】:Need Help the best overloaded method match for 'string.endswith(string)' has some invalid arguments需要帮助 'string.endswith(string)' 的最佳重载方法匹配有一些无效参数 【发布时间】:2015-12-11 07:15:54 【问题描述】:
dynamic counter = 1;
string FileNameWithoutExtestion = "";
FileNameWithoutExtestion = file.Split('.')[0];
string FileExtestion = file.Split('.')[1];
while (System.IO.File.Exists(Dir + file))

    if (true)
    
        counter = counter + 1;
        if (FileNameWithoutExtestion.EndsWith('_'))
        
            file = FileNameWithoutExtestion + counter.ToString() + "." + FileExtestion;
        
        else
        
            file = FileNameWithoutExtestion + "_" + counter.ToString() + "." + FileExtestion;
        
    

if (FileNameWithoutExtestion.EndsWith('_')) //这里发生错误

怎么了?

【问题讨论】:

旁注:if (true) 完全无用,删除即可 旁注:你可能想要var counter = 1;不是dynamic counter = 1; @Fubo 是正确的,请参阅工作演示 Ideone。还有为什么 dynamic 为什么不 int ?在这里,您只是递增名为 counter 的变量。 【参考方案1】:

String.EndsWith() 仅具有以string 作为参数的重载,您插入char

替换

.EndsWith('_')

.EndsWith("_")

我会使用这些路径方法来解析文件名和扩展名

string FileNameWithoutExtestion = System.IO.Path.GetFileNameWithoutExtension(file);
string FileExtestion = System.IO.Path.GetExtension(file); //.jpg

因为FileNameWithoutExtestion = file.Split('.')[0]; 会在foo.bar.jpg 这样的文件名的情况下导致无效值

【讨论】:

用.EndsWith("_")替换后出现同样的问题 不可能 - 请交叉检查您的代码。可能你在另一个地方有这个电话 工作.. 谢谢@fubo

以上是关于需要帮助 'string.endswith(string)' 的最佳重载方法匹配有一些无效参数的主要内容,如果未能解决你的问题,请参考以下文章

C# (String.StartsWith && !String.EndsWith && !String.Contains) 使用列表

Python3中isdigit(), isdecimal(), isnumeric()的区别和字符串的常用方法

JavaScript endsWith在IEv10中不起作用?

JavaSE8基础 String endsWith 判断A字符串是否以B字符串作为结束

ES6includes(), startsWith(), endsWith()

java代码怎么判断文件的格式是excel文件