javascript - React - 通过逗号解析用户输入的值并删除 CR/LF 和空格
问题描述
我有一个<TextArea>
输入,允许用户输入一个逗号分隔的列表,然后解析每个,
. 我正在使用基本.split()
方法执行此操作。这显然没有涵盖很多场景。我还需要考虑 CR / LF 字符(换行符等)以及前导和尾随空格。
在我的例子中也是一个案例;如果值已经被它们包围,我不想添加另一组双引号。即“4456”、“54456”将被视为“4456”、“54456”。
我解析输入值的函数如下所示:
addSelectorValue = e => {
e.stopPropagation();
e.preventDefault();
this.setState(
({ selectorValues, selectorValue }) => ({
selectorValues: [...selectorValues, ...selectorValue.split(",")],
selectorValue: ""
}),
() => {
console.log("Array of selectorValues: ", this.state.selectorValues);
}
);
};
是否有特定的库或最佳实践(如正则表达式)来实现上述情况?
我有一个沙箱在这里展示我的用例。如果您在输入几个值或用 包裹的值后按下表单上的提交按钮" "
,您可以看到正在提交的换行符。
解决方案
你可以:
/\r?\n|\r/g
通过将所有匹配项替换为空字符串来删除所有新行。split
将字符串添加到带有,
分隔符的数组中。trim
每个子串。- 删除每个子字符串上的
"
周围。.replace(/^"(.*)"$/, "$1")
addSelectorValue = e => {
e.stopPropagation();
e.preventDefault();
this.setState(({ selectorValues, selectorValue }) => ({
selectorValues: [
...selectorValues,
...selectorValue
.replace(/\r?\n|\r/g, "")
.split(",")
.map(str => str.trim().replace(/^"(.*)"$/, "$1"))
],
selectorValue: ""
}));
};
推荐阅读
- sql-server - Select 语句中的 LINQ 附加过滤器
- ios - 如何在 iOS 上使用 kCIInputTransformKey
- c - 在 C 的编译时检查类型是结构还是指针?
- python - urls.E004 路径在 Python Django 中不起作用
- java - 我们可以配置 Spring Boot Executable Jar 吗?
- python - 如何获取字符串的熊猫索引值
- java - 如何使用 Quantum 框架验证 selenium Web 驱动程序中每个索引内的文本
- triggers - 用于简单触发器的 Salesforce APEX 测试类
- python - Pandas - 在字符串列中某个字符之后“剪切”所有内容并将其粘贴到列的开头
- python - 轮询 USB 鼠标事件