C# - 在文本之间取一个字符串

Posted

技术标签:

【中文标题】C# - 在文本之间取一个字符串【英文标题】:C# -Take a string between a text 【发布时间】:2019-11-11 16:35:15 【问题描述】:

我在一个列表中有各种字符串:

Ord.cl。 N. 2724 删除 08/11/2019

也可以

Ord.cl。 N. 2725/web del 08/11/2019

我必须获取所有出现在“N”之后的内容。在'del'之前。结果我想要

2724 2725/网络

有人可以用 C# 编写代码吗?我知道有子字符串,但也许有更好的方法?

【问题讨论】:

听起来正则表达式是一个完美的工具。 你试过什么?我们可以帮助您解决疑虑,但我们不是来为您编写代码 【参考方案1】:

你可以像这样构建一些扩展方法

    public string SubstringFromTo(this string input, int from, int to)
    
        return input.Substring(from, (to - from));
    
    public string SubstringFromTo(this string input, string from, string to)
    
        var index1 = input.IndexOf(from) != -1 ? input.IndexOf(from) : 0;
        var index2 = input.IndexOf(to) != -1 ? input.IndexOf(to) : (input.Length - 1);
        return input.SubstringFromTo(index1, index2);
    

    var asd = " ciao ** come stai ? asdasd".SubstringFromTo("**","?");

结果 = “来吧” //.Trim() 如果你愿意的话

【讨论】:

【参考方案2】:

使用正则表达式,你可以这样做:

var m = Regex.Match("Ord.cl. N. 2724 del 08/11/2019", @"(?<=N\.).*?(?=del)");
if (m.Success)

    var result = m.Value;

正则表达式的解释:

(?&lt;=N\.) 查找前面的“N”。

.*? 匹配任何字符序列,但尽可能少

(?=del) 寻找尾随的“del”。

【讨论】:

使用 "(?:N\.\s*)(.*?)(?:\s*del)" 并使用第一个捕获组可以避免结果中的空格跨度> 【参考方案3】:

如果它总是那么可预测(N. 之前和之后的空格,del 之前和之后的空格),那么它相当简单。使用SubstringIndexOf 来查找N.del 的出现:

var theString = "Ord.cl. N. 2725/web del 08/11/2019";

var start = theString.IndexOf("N. ") + 3;
var length = theString.IndexOf(" del", start) - start;

var partIWant = theString.Substring(start, length).Trim();

Console.WriteLine(partIWant);

这还假设您的字符串中只会出现一次 N.del

【讨论】:

【参考方案4】:
        for (int i = 0; i< list.Count-1; i++)
        
           NDocList.Add(list[i].DocumentiOrigine.Split(new string[]  " N. " , StringSplitOptions.None)[1]
            .Split()[0]
                .Trim());
        

以某种方式解决了这个问题。

【讨论】:

以上是关于C# - 在文本之间取一个字符串的主要内容,如果未能解决你的问题,请参考以下文章

C# (.net) RegEx.Match 换行符之间的子字符串 - 使用换行符作为正向超前限制

java (取文本中间)字符串之间的文本

自学C#记录—文本操作—取出现次数

如何使用 .NET C# regex 或其他任何方法提取 *>...* 之间的文本字符串?

C#读取文件和字符串中的汉字

[C#] string 与 String,大 S 与小 S 之间有关字符串的秘密(整理中...)