我从API获取信息。这些事情之一是其中包含多个日期的字符串,但是日期周围还有许多其他需要删除的字符。

我已经尝试过使用正则表达式删除不需要的字符,但是我是新手。 this.state.data包含来自API的所有数据,content.rendered包含我正在谈论的字符串。

我从API获得的字符串:

"<p>[[&#8220;10 februari&#8221;],[&#8220;17 februari&#8221;],[&#8220;10 maart&#8221;],[&#8220;17 maart&#8221;],[&#8220;24 maart&#8221;],[&#8220;31 maart&#8221;],[&#8220;7 april&#8221;],[&#8220;14 april&#8221;],[&#8220;5 mei&#8221;],[&#8220;12 mei&#8221;],[&#8220;19 mei&#8221;],[&#8220;26 mei&#8221;],[&#8220;2 juni&#8221;],[&#8220;16 juni&#8221;],[&#8220;23 juni&#8221;]]</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>[&#8220;10 februari&#8221;,&#8220;17 februari&#8221;,&#8220;10 maart&#8221;,&#8220;17 maart&#8221;,&#8220;24 maart&#8221;,&#8220;31 maart&#8221;,&#8220;7 april&#8221;,&#8220;14 april&#8221;,&#8220;5 mei&#8221;,&#8220;12 mei&#8221;,&#8220;19 mei&#8221;,&#8220;26 mei&#8221;,&#8220;2 juni&#8221;,&#8220;16 juni&#8221;,&#8220;23 juni&#8221;]</p>

最佳答案

我建议您将准确的数据传递给清单。

因此,首先应在数据上应用regex以仅获取日期。

您可能必须使用var regex = ;(\d{0,2}.[a-zA-Z]+)仅从此字符串获取日期。 "<p>[[&#8220;10 februari&#8221;],[&#8220;17 februari&#8221;],[&#8220;10 maart&#8221;],[&#8220;17 maart&#8221;],[&#8220;24 maart&#8221;],[&#8220;31 maart&#8221;],[&#8220;7 april&#8221;],[&#8220;14 april&#8221;],[&#8220;5 mei&#8221;],[&#8220;12 mei&#8221;],[&#8220;19 mei&#8221;],[&#8220;26 mei&#8221;],[&#8220;2 juni&#8221;],[&#8220;16 juni&#8221;],[&#8220;23 juni&#8221;]]</p>\n"

看看SS中的Match Information,您将在first组中获得所需的结果。
javascript - 如何使用正则表达式获取字符串的特定部分并将其放入平面列表中(react-native)-LMLPHP



var str = "<p>[[&#8220;10 februari&#8221;],[&#8220;17 februari&#8221;],[&#8220;10 maart&#8221;],[&#8220;17 maart&#8221;],[&#8220;24 maart&#8221;],[&#8220;31 maart&#8221;],[&#8220;7 april&#8221;],[&#8220;14 april&#8221;],[&#8220;5 mei&#8221;],[&#8220;12 mei&#8221;],[&#8220;19 mei&#8221;],[&#8220;26 mei&#8221;],[&#8220;2 juni&#8221;],[&#8220;16 juni&#8221;],[&#8220;23 juni&#8221;]]</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);





我为您编写了一个函数,它将为您提供所需的数据。祝好运!

09-12 13:22