【问题标题】:Extract second section of string提取字符串的第二部分
【发布时间】:2016-12-07 05:20:12
【问题描述】:

我总会有这样的字符串:

"/FirstWord/ImportantWord/ThirdWord"

如何提取ImportantWord?单词最多可以包含一个空格,并且用forward slash分隔,就像我上面所说的那样,例如:

"/Folder/Second Folder/Content"
"/Main folder/Important/Other Content"

我总是想得到第二个字(Second FolderImportant 考虑到上面的例子)

【问题讨论】:

  • 使用String.Split() 方法创建一个由/ 字符分割的值数组

标签: c# .net regex string


【解决方案1】:

这个怎么样:

string ImportantWord = path.Split('/')[2]; // Index 2 will give the required word

【讨论】:

  • 这将返回"FirstWord" 而不是"ImportantWord",因为数组中的第一项是一个空字符串(RemoveEmptyEntries 选项是必需的)
【解决方案2】:

我希望您不需要将String.Split 选项与特定字符或某些正则表达式一起使用。由于输入是目录的合格路径,您可以使用 System.IO.Directory 类的Directory.GetParent 方法,它将为您提供作为 DirectoryInfo 的父目录。从中您可以获取目录名称,这将是所需的文本。

你可以这样使用:

string pathFirst = "/Folder/Second Folder/Content";
string pathSecond = "/Main folder/Important/Other Content";

string reqWord1 = Directory.GetParent(pathFirst ).Name; // will give you Second Folder
string reqWord2 = Directory.GetParent(pathSecond).Name; // will give you Important

补充说明:Directory.GetParent方法可以嵌套,如果你需要在另一个级别获取名称。

【讨论】:

    【解决方案3】:

    你也可以试试这个:

    var stringValue = "/FirstWord/ImportantWord/ThirdWord";
    var item = stringValue.Split('/').Skip(2).First();   //item: ImportantWord
    

    【讨论】:

      【解决方案4】:

      有几种方法可以解决这个问题。最简单的是使用String.split

      Char delimiter = '/';
      String[] substrings = value.Split(delimiter);
      String secondWord = substrings[1];
      

      (您可能需要进行一些输入检查以确保输入格式正确,否则您会遇到一些异常)

      当模式很简单时,另一种方法是使用regex/

      如果您确定这是一条路径,您可以使用此处提及的其他答案

      【讨论】:

        猜你喜欢
        • 2023-03-17
        • 1970-01-01
        • 2021-02-21
        • 1970-01-01
        • 2018-01-07
        • 2018-12-13
        • 1970-01-01
        相关资源
        最近更新 更多