C# - 在文本之间取一个字符串
C# -Take a string between a text
我在列表中有各种字符串:
Ord.cl. N. 2724 del 08/11/2019
也可以是
Ord.cl. N. 2725/web del 08/11/2019
我必须把 'N.' 之后和 'del' 之前的所有内容都拿走。结果我想要
- 2724
- 2725/网站
有人可以用 C# 编写代码吗?我知道有子字符串,但也许有更好的方法?
使用正则表达式,你可以这样做:
var m = Regex.Match("Ord.cl. N. 2724 del 08/11/2019", @"(?<=N\.).*?(?=del)");
if (m.Success)
{
var result = m.Value;
}
正则表达式解释:
(?<=N\.)
查找前面的 "N.".
.*?
匹配任何字符序列,但尽可能少
(?=del)
期待追踪 "del".
如果它总是那么可预测(space 前后 N.
和 space 前后 del
),那么它相当简单。使用 Substring
and use IndexOf
查找出现的 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
在您的字符串中只会出现一次。
你可以像这样构建一些扩展方法
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("**","?");
结果 = "come stai"
//.Trim() 如果你想要
for (int i = 0; i< list.Count-1; i++)
{
NDocList.Add(list[i].DocumentiOrigine.Split(new string[] { " N. " }, StringSplitOptions.None)[1]
.Split()[0]
.Trim());
}
以某种方式解决了这个问题。
我在列表中有各种字符串:
Ord.cl. N. 2724 del 08/11/2019
也可以是
Ord.cl. N. 2725/web del 08/11/2019
我必须把 'N.' 之后和 'del' 之前的所有内容都拿走。结果我想要
- 2724
- 2725/网站
有人可以用 C# 编写代码吗?我知道有子字符串,但也许有更好的方法?
使用正则表达式,你可以这样做:
var m = Regex.Match("Ord.cl. N. 2724 del 08/11/2019", @"(?<=N\.).*?(?=del)");
if (m.Success)
{
var result = m.Value;
}
正则表达式解释:
(?<=N\.)
查找前面的 "N."..*?
匹配任何字符序列,但尽可能少(?=del)
期待追踪 "del".
如果它总是那么可预测(space 前后 N.
和 space 前后 del
),那么它相当简单。使用 Substring
and use IndexOf
查找出现的 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
在您的字符串中只会出现一次。
你可以像这样构建一些扩展方法
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("**","?");
结果 = "come stai"
//.Trim() 如果你想要
for (int i = 0; i< list.Count-1; i++)
{
NDocList.Add(list[i].DocumentiOrigine.Split(new string[] { " N. " }, StringSplitOptions.None)[1]
.Split()[0]
.Trim());
}
以某种方式解决了这个问题。