如何获得子字符串中字符的第一次出现

本文关键字:第一次 字符 何获得 字符串 | 更新日期: 2023-09-27 18:18:59

我试图获得第一个出现在我的子字符串起点:

string dir = Request.MapPath(Request.ApplicationPath) + "''App_GlobalResources''";
foreach (var file in Directory.EnumerateFiles(dir, "*.resx"))
{
    ddlResources.Items.Add(new ListItem { Text = file.Substring(firstoccuranceof("."), file.LastIndexOf(".")), Value = file });
}

如果我执行file.Substring(file.IndexOf("."), file.LastIndexOf(".")),我会得到一个错误

如何获得子字符串中字符的第一次出现

要回答您的实际问题-您可以使用string.IndexOf来获得字符的第一次出现。注意,您需要从LastIndexOf调用中减去这个值,因为Substring的第二个参数是要获取的字符数,而不是开始和结束索引。

然而

…您可以使用Path来代替解析名称。GetFilenameWithoutExtension直接获取文件名

首次出现

String.IndexOf('.')
去年发生

String.LastIndexOf('.')

使用IndexOfLastIndexOf字符串方法获取"search"字符串第一次和最后一次出现的索引。您可以使用System.IO.Path.GetExtension()System.IO.Path.GetFileNameWithoutExtension()System.IO.Path.GetDirectoryName()方法来解析路径。

例如,

string file = @"c:'csnet'info.sample.txt";
Console.WriteLine(System.IO.Path.GetDirectoryName(file));           //c:'csnet
Console.WriteLine(System.IO.Path.GetFileName(file));                //info.sample.txt
Console.WriteLine(System.IO.Path.GetFileNameWithoutExtension(file));//info.sample
Console.WriteLine(System.IO.Path.GetExtension(file));               //.txt

file.IndexOf(".")

应该得到第一次出现的"。"。如果没有找到,则返回-1。

我认为在您的特定情况下,您没有试图获得IndexOf…相反,您需要使用0,因为您正在尝试基于文件名创建一个密钥,如果理解正确的话:

`ddlResources.Items.Add(new ListItem(file.Substring(0, file.LastIndexOf(".")), file ));`

另外,你有'{}'在那里,如在new listtem{…}这也会导致语法错误…不管怎样,看一看……

因为最初的问题是用[regex]标记的,所以我将提供以下解决方案,但是使用。net简单解析路径的最佳答案不是使用regex。

//extracts "filename" from "filename.resx"
string name = Regex.Match("filename.resx", @"^(.*)'..+?$").Groups[1].Value; 

为简单起见,请使用依赖于Path类的答案。其他答案包含了这些信息。

给你

使用字符串变量类型

int index = str.IndexOf(@"'");

"C: ' '有人'用户桌面' aFolder ' someFile"

https://www.peachpit.com/articles/article.aspx?p=31938& seqNum = 12 #: ~:文本= % 20首先找到% 20 % 20 % 20,或者字符串% 20你% 20 % 20 % 20寻找。