我有以下字符串:
string str ="dasdsa|cxzc|12|#dsad#|czxc";
我需要一个返回的函数:#dsad#
考虑到#dsad#
是动态创建的,所以它可能会变,而且它的长度也可能会变
如果可用,我如何使用正则表达式(搜索两个哈希标签之间的字符串)或其他方法来做到这一点?
发布于 2016-09-26 05:18:39
如果您的字符串是以管道分隔的字符串,则可以使用|
拆分,并获取以#
开头和结尾的值。
var str ="dasdsa|cxzc|12|#dsad#|czxc";
var result = str.Split('|').Where(p => p.StartsWith("#") && p.EndsWith("#")).ToList();
foreach (var s in result)
Console.WriteLine(s);
见在线C#演示。
如果只需要一个值,请使用.FirstOrDefault()
var result = str.Split('|')
.Where(p => p.StartsWith("#") && p.EndsWith("#"))
.FirstOrDefault();
发布于 2016-09-26 05:13:57
假设您想要匹配#字符,您可以使用以下正则表达式:
#[a-z]+#
如果希望字符串始终为1|2|3|#4#|5格式,则可以使用String.Split(‘AC.26’)方法,只需接受结果的第四个元素。
发布于 2016-09-26 05:15:12
假设#dasd#
在字符串中只出现一次,请尝试如下:
String a = "asd|asd|#this#|asdasd";
string m = Regex.Match(a, @"#.+#").Value;
Console.WriteLine(m);
.+
搜索任何字符
如果您的字符串使用|
作为分隔符,则还可以拆分该字符串。
string [] array = a.Split('|');
// this would get a list off all values with `#`
List<string> found_all = array.Where(x => x.Contains("#")).ToList();
// this would get the first occurrence of that string. If not found it will return null
string found = array.FirstOrDefault(x => x.Contains("#"))
https://stackoverflow.com/questions/39703721
复制相似问题