粘贴前替换剪贴板中的特殊字符

时间:2020-02-15 22:28:42

标签: javascript html clipboard

我使用了一个小js函数,该函数允许将剪贴板的内容粘贴到textarea中。见下文。 我粘贴的数据来自excel,并用特殊字符\r\n分隔 我需要在粘贴前直接用逗号“,”替换这些特殊字符 有一个简单的方法吗?谢谢你提前

	function Coller() {
		navigator.clipboard.readText().then(clipText =>
		document.getElementById("textarea").innerText = clipText);
	}
<button onclick="Coller()">Coller</button>

<textarea id="textarea" rows="10" cols="40"></textarea>

2 个答案:

答案 0 :(得分:1)

您可以使用String.prototype.replace()函数解决此问题。 (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace

您可以像这样使用它:

import React, {useState} from 'react';
import {
  StyleSheet,
  View,
} from 'react-native';
import {
  Input,
  Layout,
} from '@ui-kitten/components';

export const CustomInputExample = () => {
  const [ focusStatus, setFocusStatus ] = useState(false)

  const onMouseEnter = () => {
     setFocusStatus(true)
  }

  const onMouseLeave = () => {
     setFocusStatus(false)
  }

  return (
    <Layout>
      <Input
        style={focusStatus ? styles.customStyle : styles.basicStyle}
        status={focusStatus ? 'success' : 'basic'}
        placeholder='Success'
        onMouseEnter={onMouseEnter}
        onMouseLeave={onMouseLeave}
      />
    </Layout>
  );
};

const styles = StyleSheet.create({
  basicStyle: {
    borderColor: grey,
  },
  customStyle: {
    borderColor: '#3CB46E'
  },
});

在这种情况下,function Coller() { navigator.clipboard.readText().then(clipText => document.getElementById("textarea").innerText = clipText.replace(/["]/gm, '').replace(/[\r\n]+/gm, ',')); } (在Mac上创建),\r(在Linux上创建)和\n(在Windows上创建)将被替换。

  • \r\n代表全局,因此字符串中的每个特殊字符都会被替换
  • g代表多行,因此即使您的文本有多行,所有特殊字符也会被替换

答案 1 :(得分:0)

用正则表达式替换特殊字符:

document.getElementById("textarea").innerText = clipText.replace(/\r\n/g, ',');

示例:

let text = "Cherry\r\nOrange\r\nApple"

console.log(text.replace(/\r\n/g, ','))