我想从下面的字符串得到一些字符串里面串
string test = "name: abc loc: xyz address: tfd details: ddd";
串即地址是否有子选项来获得唯一地址的详细信息,如“TFD”
我想通过分裂,我认为这不是获得中间字符串的最佳选择。
test.Text.Split(':').LastOrDefault()
我想从下面的字符串得到一些字符串里面串
string test = "name: abc loc: xyz address: tfd details: ddd";
串即地址是否有子选项来获得唯一地址的详细信息,如“TFD”
我想通过分裂,我认为这不是获得中间字符串的最佳选择。
test.Text.Split(':').LastOrDefault()
这里有一个方法使用正则表达式:
var pattern = @"name: (\S+) loc: (\S+) address: (\S+) details: (\S+)";
var match = Regex.Match(input, pattern);
var group = match.Groups[3];
var value = group.Value;
一些假设:
不确定假设地址没有空间是安全的。 – juharr
@juharr - 这就是为什么我把它放在“假设”中。他可以拿走或离开它。 –
var parts = test.split(' ');
var keyIndex = parts.indexOf('address:');
var address = parts[keyIndex + 1];
适用于该示例,但如果地址中有空格,例如“123 Maple Street”,则失败。 – juharr
@juharr - 这就是为什么你必须执行一些规则。 –
这个问题没有提到空格,例子也没有。 –
我个人比较喜欢的正则表达式解决方案的更多,但我想添加一个非正则表达式之一:
string test = "name: abc loc: xyz address: t f d details: ddd";
int start = test.IndexOf("address:");
int end = test.IndexOf("details:");
string adr = test.Substring(start, end-start);
Console.WriteLine(adr);
打印
t f d
所以我知道这个版本的作品与空间。
编辑:
您可能需要运行adr.Trim()
或修改字符串两个IndexOf
调用切出的空间上返回的字符串的两侧。
那么,如果地址本身是“细节:”呢? –
然后它不起作用。它看起来像OP使用以':'结尾的关键字来标识部分数据而不是数据本身,所以它应该是安全的。我不知道这是肯定的,所以这只是OP的另一种选择,如果需要的话。 – Cody
简单的函数:
public static string GetTextbetween(string content, string start, string end)
{
if (content.Length == 0 || start.Length == 0 || end.Length == 0)
return string.Empty;
string contentRemove = content.Remove(0, content.IndexOf(start, StringComparison.Ordinal) + start.Length);
return contentRemove.Substring(0, contentRemove.IndexOf(end, StringComparison.Ordinal)).Trim();
}
例子:
GetTextbetween("name: abc loc: xyz address: Thomas Nolan Kaszas 5322 Otter LnMiddleberge FL 32068 details: ddd", "address:", "details:")
,你会得到:
托马斯·诺兰Kaszas 5322水獭LnMiddleberge FL 32068
我们e一些正则表达式适合您的需求
Match m = new Regex(@"address:\s(.*)\sdetails").Match(test);
if (m.Groups.Count > 0)
{ string s = m.Groups[1].Value; }
[正则表达式](https://en.wikipedia.org/wiki/Regular_expression)FTW! –
它总是“tfd”?它是否始终是“address:”之后的值?我们需要更多信息。 – krillgar
只需检查:您的数据看起来像一个json字符串,带有花括号,逗号和引号。如果是这样的话:去序列化一个对象,而不是用字符串摆弄。 – Filburt