我从API获取信息。这些事情之一是其中包含多个日期的字符串,但是日期周围还有许多其他需要删除的字符。
我已经尝试过使用正则表达式删除不需要的字符,但是我是新手。 this.state.data包含来自API的所有数据,content.rendered包含我正在谈论的字符串。
我从API获得的字符串:
"<p>[[“10 februari”],[“17 februari”],[“10 maart”],[“17 maart”],[“24 maart”],[“31 maart”],[“7 april”],[“14 april”],[“5 mei”],[“12 mei”],[“19 mei”],[“26 mei”],[“2 juni”],[“16 juni”],[“23 juni”]]</p>\n"
这是我用来显示数据的代码
var regex = /\[(.*?)\]/g;
<FlatList
data={[this.state.data]}
renderItem={({item})=>
<View>
<Text style={styles.text}>
content: {t(item, 'content.rendered').safeString.replace(regex, "$1")}
</Text>
</View>
}/>
我要的是只显示日期;
10 februari, 17 februari, 10 maart, 17 maart, 24 maart, 31 maart, 7 april, 14 april, 5 mei, 12 mei, 19 mei, 26 mei, 2 juni, 16 juni, 23 juni
但它显示像;
<p>[“10 februari”,“17 februari”,“10 maart”,“17 maart”,“24 maart”,“31 maart”,“7 april”,“14 april”,“5 mei”,“12 mei”,“19 mei”,“26 mei”,“2 juni”,“16 juni”,“23 juni”]</p>
最佳答案
我建议您将准确的数据传递给清单。
因此,首先应在数据上应用regex
以仅获取日期。
您可能必须使用var regex = ;(\d{0,2}.[a-zA-Z]+)
仅从此字符串获取日期。 "<p>[[“10 februari”],[“17 februari”],[“10 maart”],[“17 maart”],[“24 maart”],[“31 maart”],[“7 april”],[“14 april”],[“5 mei”],[“12 mei”],[“19 mei”],[“26 mei”],[“2 juni”],[“16 juni”],[“23 juni”]]</p>\n"
看看SS中的Match Information
,您将在first
组中获得所需的结果。
var str = "<p>[[“10 februari”],[“17 februari”],[“10 maart”],[“17 maart”],[“24 maart”],[“31 maart”],[“7 april”],[“14 april”],[“5 mei”],[“12 mei”],[“19 mei”],[“26 mei”],[“2 juni”],[“16 juni”],[“23 juni”]]</p>\n";
function getDates(str) {
var arr = str.split(',');
var dates = [];
arr.forEach(function(e) {
dates.push(e.match(/;(\d{0,2}.[a-zA-Z]+)/g)[0].replace(';',''));
});
return dates;
}
getDates(str);
我为您编写了一个函数,它将为您提供所需的数据。祝好运!