String 如何找出字符串中以#开头的单词
我想找出所有以#开头的单词 例如=这是一个#标记 我想创建这个(#标记)tappable并将其颜色更改为蓝色。 请给点建议String 如何找出字符串中以#开头的单词,string,flutter,dart,String,Flutter,Dart,我想找出所有以#开头的单词 例如=这是一个#标记 我想创建这个(#标记)tappable并将其颜色更改为蓝色。 请给点建议 Text("This is a #tag"), 首先,可以使用split()方法获取句子中的单词列表。然后,您可以检查该列表中的每个单词,如果以#开头,则可以将其添加到hashTag列表中。它将如下所示: String s = "This is a #tag"; List<String> splitted
Text("This is a #tag"),
首先,可以使用split()方法获取句子中的单词列表。然后,您可以检查该列表中的每个单词,如果以#
开头,则可以将其添加到hashTag列表中。它将如下所示:
String s = "This is a #tag";
List<String> splitted = s.split(" ");
List<String> hashTags = List<String>();
for (var item in splitted) {
if (item.startsWith("#")) {
hashTags.add(item);
}
}
print(hashTags);
// Expected output is: [#tag]
String s=“这是一个#标记”;
列表拆分=s.split(“”);
List hashTags=List();
对于(拆分中的var项目){
if(项目开始时以“#”号填列){
hashTags.add(项目);
}
}
打印(标签);
//预期输出为:[#标记]
您可以使用正则表达式查找以字符#开头的所有单词。然后使用Text.rich或RichText的InlineSpan小部件以蓝色显示匹配的单词,并使用WidgetSpan小部件使匹配的单词可点击。请参阅下面的代码或直接在上运行它
导入“包装:颤振/材料.省道”;
void main(){
runApp(MyApp());
}
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
debugShowCheckedModeBanner:false,
家:脚手架(
appBar:appBar(
标题:常量文本(“颤振演示”),
),
正文:中(
子项:MyWidget(),
),
),
);
}
}
类MyWidget扩展了无状态Widget{
@凌驾
小部件构建(构建上下文){
最终列表textSpans=[];
final String text=“这是一个#标记。这是#标记2。这是#标记3。”;
最终RegExp regex=RegExp(r“\\\\(\w+));
final Iterable matches=regex.allMatches(文本);
int start=0;
对于(比赛中的最后一场比赛){
添加(TextSpan(text:text.substring(start,match.start));
textSpans.add(WidgetSpan(
儿童:手势检测器(
onTap:()=>print(“您点击了#${match.group(1)}”),
子:文本(“#${match.group(1)}”,
样式:const TextStyle(颜色:Colors.blue‘‘‘‘)’);
开始=匹配。结束;
}
添加(TextSpan(text:text.substring(start,text.length));
返回Text.rich(TextSpan(子项:textSpans));
}
}
这是我写的代码。还没有测试过,但希望它能工作
List<String> hashAdder(String value) {
List<String> tags = [];
bool hashExist = value.contains('#');
if (hashExist) {
for (var i = 0; i < value.length; i++) {
int hashIndex = value.indexOf('#');
int hashEnd = value.indexOf(' ', hashIndex);
tags.add(value.substring(hashIndex, hashEnd));
value = value.substring(hashIndex);
}
}
return tags;
}
列表哈希加法器(字符串值){
列表标记=[];
bool hashExist=value.contains(“#”);
如果(hashExist){
对于(变量i=0;i
使用RegEx
只需两行即可获得所需的结果:
List<String> extractHashtags(String text) {
Iterable<Match> matches = RegExp(r"\B(\#[a-zA-Z]+\b)").allMatches(text);
return matches.map((m) => m[0]).toList();
}
List extractHashtags(字符串文本){
Iterable matches=RegExp(r“\B(\\\[a-zA-Z]+\B)”)。所有匹配项(文本);
返回matches.map((m)=>m[0]).toList();
}
List<String> extractHashtags(String text) {
Iterable<Match> matches = RegExp(r"\B(\#[a-zA-Z]+\b)").allMatches(text);
return matches.map((m) => m[0]).toList();
}