首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将SanitizeFunction与React onPaste集成

将SanitizeFunction与React onPaste集成
EN

Stack Overflow用户
提问于 2021-07-23 16:07:37
回答 1查看 57关注 0票数 0

用例:

I有一个用例,用户可以在textArea中粘贴以下字符串之一,并且必须格式化为新行:

空格(例如: 12,2,3)

  • Comma-newline (例如: 12,\n2,\n,\n)

  • Newline (例如: 12\n2 \n3 \n)

我尝试使用onPaste functionality,但不确定如何将这个用例与React onPaste集成

我有这个清理实用程序,它接受粘贴输入(string)并返回一个数组。

代码语言:javascript
复制
function sanatizeToArray(str){
    str=str || "";
    str = str.replaceAll(" ",""); // get rid of spaces!
    str = str.replaceAll("\n",","); // change new lines into commas
    str = str.replaceAll(",,",","); // get rid of duplicates
    return str.split(","); // break it down!
}

sanatizeToArray("12, 2, 3"); // Prints ["12", "2", "3"]
sanatizeToArray("12,\n2,\n3,\n"); // Prints ["12", "2", "3", ""]
sanatizeToArray("12\n2\n3\n"); // Prints ["12", "2", "3", ""]

如果有人能帮助将这个sanitizeArray函数与onPaste集成起来,我将非常感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-23 16:51:43

从您在注释中提供的代码示例来看,您的onPaste集成运行良好。您的清洁功能也运行良好,具体取决于您要做的是什么。

从字面上说,在文本区域中键入\n与键入实际的换行符不一样,因为\n在文本区域中输入时会自动转义到\\n。这意味着像Hello\nWorld\n!这样的字符串将被处理为Hello\\nWorld\\n!,而您的replaceAll调用将无法找到任何换行字符。

如果您想测试将实际的换行粘贴到您的输入中(这是更有可能的输入),那么复制粘贴这个块,您会注意到您的代码工作得很好:

代码语言:javascript
复制
12
2
3

如果您也想替换转义的换行字符,那么只需添加一个额外的replaceAll调用:

代码语言:javascript
复制
str = str.replaceAll("\\n", ",");

虽然我怀疑这是否有必要。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68502104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档