- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
伙计们,对不起我的英语,这是我的第二语言。
所以有一个包含以下文本的字符串:
**Lorem** ipsum dolor sit, amet consectetur adipisicing elit.
如何用 <b>
替换“**”字符和 </b>
标签或 <div>
和 </div>
带有 React native 的标签,所以我可以像这样输出它:
<b>Lorem</b> ipsum dolor sit, amet consectetur adipisicing elit.
我尝试用 **
开始粗体文本并以 /*
结尾, 然后替换 **
与 <b>
和 /*
与 </b>
使用替换方法:
str.replace("/*", "</b>").replace("**", "<b>")
但我只有这样的字符串:
<b>Lorem</b> ipsum dolor sit, amet consectetur adipisicing elit.
.
这是有问题的,因为我使用的是 React native,它只输出类似字符串的内容。它适用于 PHP。
先谢谢了!
最佳答案
您可以执行类似以下代码的操作。
逐步详细信息:
**
拆分文本字符串以创建 string
数组 arr
。**...**
中的字符串将位于 arr
数组中的奇数索引处。Text
组件在奇数索引处包装字符串,在偶数索引处包装其他字符串(即在 **...**
block 之外) 和简单的 Text
组件。Text
组件附加到一个数组。Text
组件中呈现此 Text
组件数组,以将所有组件显示为同一行上的单个组件。import React from "react";
import { StyleSheet, Text, View } from "react-native";
const styles = StyleSheet.create({
app: {
width: "100%"
},
bold: {
fontWeight: "bold"
}
});
function App() {
const text =
"**Lorem** ipsum dolor sit, *amet consectetur **adipisicing** elit.";
function getSmartBold() {
// Split the text around **
const arr = text.split("**");
// Here we will store an array of Text components
const newTextArr = [];
// Loop over split text
arr.forEach((element, index) => {
// If its an odd element then it is inside **...** block
if (index % 2 !== 0) {
// Wrap with bold text style
const newElement = <Text style={styles.bold}>{element}</Text>;
newTextArr.push(newElement);
} else {
// Simple Text
const newElement = <Text>{element}</Text>;
newTextArr.push(newElement);
}
});
return newTextArr;
}
return (
<View style={styles.app}>
<Text>{getSmartBold()}</Text>
</View>
);
}
export default App;
CodeSandbox 链接:https://codesandbox.io/s/happy-cori-oex9kg?file=/src/App.js
编辑:如果您希望粗体文本功能更智能,您可以检查有悬空的杂散文本 **
。相同的代码:
import React from "react";
import { StyleSheet, Text, View } from "react-native";
const styles = StyleSheet.create({
app: {
width: "100%"
},
bold: {
fontWeight: "bold"
}
});
function getSmartBoldText(text, boldWrapperText = "**") {
// Split the text around **
const splitStringArr = text.split(boldWrapperText);
console.debug(`splitStringArr = `, splitStringArr);
// Here we will store an array of Text components
const textComponentsArr = [];
// Loop over split text
splitStringArr.forEach((string, index) => {
// If its an odd element then it is inside **...** block
// And is not a word surrounded by stray ** (without any closing)
if (index % 2 !== 0 && index !== splitStringArr.length - 1) {
// Wrap with bold text style
const boldText = <Text style={styles.bold}>{string}</Text>;
textComponentsArr.push(boldText);
} else {
// Simple Text
// If it's stray element, append ** to it
if (index === splitStringArr.length - 2) {
string = string + boldWrapperText;
}
const normalText = <Text>{string}</Text>;
textComponentsArr.push(normalText);
}
});
return textComponentsArr;
}
function App() {
const text =
"**Lorem ipsum dolor sit, *amet consectetur **adipisicing **elit.";
return (
<View style={styles.app}>
<Text>{getSmartBoldText(text, "**")}</Text>
</View>
);
}
export default App;
用于更智能的粗体文本功能的 CodeSandbox 链接:https://codesandbox.io/s/boring-haslett-238nt3?file=/src/App.js
关于javascript - 如果我以某种方式在 React Native 中标记,如何使字符串的特定文本变为粗体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74220684/
下面是我用来制作 1px 文本描边轮廓的代码。但是如何使轮廓变粗呢?如果我只是用“5px”替换所有“1px”,结果看起来很疯狂。 HTML Hello! CSS .element { color:
我是一名优秀的程序员,十分优秀!