我想從下面的字符串得到一些字符串裏面串
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