我正在 C# 中处理 Xamarin.Forms PCL 项目,并希望检测所有主题标签。
我尝试在空格处拆分并检查单词是否以 # 开头,但问题是如果帖子包含两个空格,例如“Hello #World Test”,它会丢失双空格
string body = "Example string with a #hashtag in it";
string newbody = "";
foreach (var word in body.Split(' '))
{
if (word.StartsWith("#"))
newbody += "[" + word + "]";
newbody += word;
}
Run Code Online (Sandbox Code Playgroud)
目标输出:
包含 [#hashtag] 的示例字符串
我也只希望它有 AZ az 0-9 和 _ 停在任何其他字符
测试 #H3ll0_W0rld$%Test => 测试 [#H3ll0_W0rld]$%Test
其他堆栈问题尝试检测字符串并提取它,我希望它可以使用它并将其放回字符串中而不会丢失任何方法(例如按某些字符拆分)会丢失的任何内容。
您可以使用正则表达式#\w+和$&
解释
##字面上匹配字符(区分大小写)\w+匹配任何单词字符(等于[a-zA-Z0-9_])+ 量词 - 在一次和无限次之间匹配,尽可能多次,根据需要回馈(贪婪)$& 在替换字符串中包含整个匹配项的副本。
例子
var input = "asdads sdfdsf #burgers, #rabbits dsfsdfds #sdf #dfgdfg";
var regex = new Regex(@"#\w+");
var matches = regex.Matches(input);
foreach (var match in matches)
{
Console.WriteLine(match);
}
Run Code Online (Sandbox Code Playgroud)
或者
var result = regex.Replace(input, "[$&]" );
Console.WriteLine(result);
Run Code Online (Sandbox Code Playgroud)
输出
#burgers
#rabbits
#sdf
#dfgdfg
asdads sdfdsf [#burgers], [#rabbits] dsfsdfds [#sdf] [#dfgdfg]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1187 次 |
| 最近记录: |