Как разделить слова с помощью JavaScript - PullRequest
9 голосов
/ 05 октября 2011

Это может быть простой вопрос, но как мне разделить слова ... например

a = "even, test"

Я использовал .split для разделения текста пробелом.

так что результат получился как

a = "even,"
b = "test"

Но как мне убрать здесь запятую?

Но в некоторых условиях это может быть "четным тестом", а в некоторых условиях я могу получить "четным тестом" Все динамические, так как я могу проверить это для обоих?

Спасибо

Ответы [ 7 ]

13 голосов
/ 05 октября 2011

Во-первых, функция split() - это не jQuery - это чистый Javascript.

Вы пробовали разделить запятую и пробел?В вашем случае это сработало бы отлично:

var result = input.split(', ');

Для более сложных разбиений вы можете использовать сопоставление с шаблоном регулярного выражения, чтобы разрешить множественные запятые или пробелы между двумя полями:

var result = input.split(/[, ]+/);

но вам, вероятно, не нужно заходить так далеко в вашем случае.

4 голосов
/ 25 августа 2015

Я думаю, что лучше использовать что-то вроде этого:

text.match(/[a-z'\-]+/gi);

Пример:

var e=function()
 {
  var r=document.getElementById('r');
  var x=document.getElementById('t').value.match(/[a-z'\-]+/gi);
  for(var i=0;i<x.length;i++)
   {
    var li=document.createElement('li');
    li.innerText=x[i];
    r.appendChild(li);  
   }
 }
<div style="float:right;width:18%">
 <ol id="r" style="display:block;width:auto;border:1px inner;overflow:scroll;height:8em;max-height:10em;"></ol>
 <button onclick="e()">Extract words!</button>
</div>
<textarea id="t" style="width:70%;height:12em">even, test; spider-man

But saying o'er what I have said before:
My child is yet a stranger in the world;
She hath not seen the change of fourteen years,
Let two more summers wither in their pride,
Ere we may think her ripe to be a bride.

—Shakespeare, William. The Tragedy of Romeo and Juliet</textarea>
1 голос
/ 09 мая 2019

Я нашел список разделителей слов в настройках Sublime Text по умолчанию.Вот как разделить его с некоторой поддержкой Unicode (хотя определенные разделители не являются Unicode):

{ // word_separators: ./\()"'-,;<>~!@#$%^&*|+=[]{}`~?: (32)
    function splitByWords(str = '', limit = undefined) {
        return str.split(/[-./\\()"',;<>~!@#$%^&*|+=[\]{}`~?:]/u, limit)
    }

    function reverseString(str) {
        let newString = ''
        for (let i = str.length - 1; i >= 0; i--)
            newString += str[i]
        return newString
    }

    const str = '123.x/x\\x(x)x"x\'x-x:x,789;x<x>x~x!x@x#x$x%x^x&x*x|x+x=x[x]x{x}x`x~x?456'
    console.log(splitByWords(str)) // (33) ["123", "x", "x", "x", "x", "x", "x", "x", "x", "x", "789", "x", "x", "x", "x", "x", "x", "x", "x", "x", "x", "x", "x", "x", "x", "x", "x", "x", "x", "x", "x", "x", "456"]
    console.log(splitByWords(str, 1)) // ["123"]
    console.log(splitByWords(reverseString(str), 1)) // ["654"]
}

По какой-то причине - должен быть в начале, а : вконец.Изменить: вы можете добавить \ s (после -) для подсчета пробелов в качестве разделителя

1 голос
/ 05 октября 2011

Просто используйте этот код:

var a = "even, test";
var words = a.split(", ");
1 голос
/ 05 октября 2011
a.split(',')

или

var re = /\s*,\s*/
var newA = a.split(re);
1 голос
/ 05 октября 2011

Хей Гарри

если запятая является разделителем, вы можете вызвать разделение запятой

Ex:

var newColls = myString.split(",");

и не разделены пробелом.

GL

0 голосов
/ 05 октября 2011

Я думаю, вы могли бы сделать это так:

var a= 'even,'
var newA = a.slice(0, -1)

Это удалит последний символ из заданной строки.

И чтобы проверить, содержит ли строка запятую, я бысделайте следующее:

if (a.indexOf(",") >= 0){
    //contains a comma
} else {
    //no comma
}

Я новичок в JavaScript, так что это, вероятно, не лучший способ сделать это, но тем не менее это работает.

...