我正在尝试从下面的字符串中获取子字符串即地址
string test = "name: abc loc: xyz address: tfd details: ddd";
是否有任何子字符串选项只能获取地址详细信息,例如" tfd"
我正在尝试分裂,我认为这不是获得中间字符串的最佳选择。
test.Text.Split(':').LastOrDefault()
答案 0 :(得分:3)
简单功能:
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:")
你会得到:
Thomas Nolan Kaszas 5322 Otter LnMiddleberge FL 32068
答案 1 :(得分:2)
这是一种使用正则表达式的方法:
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;
一些假设:
答案 2 :(得分:2)
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
import numpy as np
One = range(1,10)
Two = range(5, 14)
l = len(One)
fig = plt.figure(figsize=(10,6))
gs = gridspec.GridSpec(3, 1, height_ratios=[5, 3, 3])
ax0 = plt.subplot(gs[0])
ax0.bar(range(l), Two)
plt.ylabel("Number of occurrence", y=-0.8) ## ← ← ← HERE
ax1 = plt.subplot(gs[1], sharey=ax0)
ax1.bar(range(l), Two)
ax2 = plt.subplot(gs[2])
ax2.bar(range(l), One)
plt.show()
答案 3 :(得分:2)
我个人更喜欢Regex解决方案,但我想添加一个非正则表达式:
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
调用中的字符串,以删除返回字符串两侧的空格。
答案 4 :(得分:2)
根据建议使用一些符合您需求的正则表达式
Match m = new Regex( @"address:\s(.*)\sdetails" ).Match( test );
if ( m.Groups.Count > 0 )
{ string s = m.Groups[1].Value; }