2016-09-16 3 views
-2

에 저장이이 코드가 있습니다자바 스크립트를 분할 문자로 단어와 배열

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Bad Grammar Generator</title> 
</head> 
<body> 

    <input type="text" id="userIn"> 
    <input type="button" name="name" id="btn" value="Bad Grammar-ify" onclick="badgrammar()"> 
    <span id="output"></span> 
    <script type="text/javascript"> 
    var userIn = document.getElementById("userIn").value; 
    function badgrammar() { 
     var userIn = document.getElementById("userIn").value; 
     var output = document.getElementById("output"); 
     var split = new Array(); 
     split = userIn.split(" "); 
     output.innerText = split; 
    } 
    </script> 

</body> 
</html> 

그것은 작동을하지만, 한 단어로 사용자 입력을 분할합니다. 편지로 사용자 입력을 어떻게 분할 할 수 있습니까?

예 :

입력 : Hi there 출력 : H,i,t,h,e,r,e

+1

'userIn.split ("");'(공백이 없으면) 개별 문자로 분할되지만 공백을 제외 시키겠다는 소리가 나나요? – smarx

답변

2

이 당신이 원하는 것을 수행해야합니다

var split = userIn.replace(/ /g, '').split(''); 

참고 여기에 두 가지 단계가 있다는 것을 :

  1. replace(' ', '')가 inpu의 모든 공백을 제거합니다. t (아무것도 대체하지 않음).
  2. split('')은 개별 문자로 나뉩니다.
+0

첫 번째 공간 만 바꿉니다. '.replace (//g, '')를 사용해보십시오. – usandfriends

2

당신은 그것에 대해 match을 사용할 수

s = "hi there"; 
 
res = s.match(/\S/g); 
 
console.log(res);

정규 표현식 \S 공백이 아닌 모든 단일 문자와 일치합니다. match은 모두 일치하는 배열을 반환하므로 실제로는 공백을 제외하고 입력의 모든 문자를 포함하여 단일 문자 요소가 포함 된 배열이됩니다.

+0

이 솔루션은 다른 정규식 기반 솔루션보다 훨씬 비효율적입니다. – usandfriends

+2

@usandfriends, 나는 OP가 요구하는 부분적인 사용, 즉 HTML'input' 엘리먼트에 대해 어떤 차이가 있는지를 알 수 없을 것이라고 생각합니다. 브라우저와 DOM의 오버 헤드는이 코드의 실행보다 더 중요합니다 .-) – trincot

+0

성능 테스트를 수행했습니다. 200,000 자 문자열의 경우이 코드는 내 PC에서 15 밀리 초가 걸렸습니다. 그래서 ... 나는 공연이 여기의 문제가 아니라고 생각한다. – trincot

관련 문제