2015-08-16 6 views
2

Я новичок и кучу строк данных (предложений). Я пытаюсь разделить каждое предложение на подстроки, где длина каждой строки не превышает длину самого длинного единственного слова в этом предложении и возвращает все слова в их исходной последовательности с разрывами строк (возврат каретки Photoshop, «\ r»), разделяющий подстроки, для этого предложения. Слова в каждой строке не переносятся (только полные слова или группы слов, сломанных там, где пробел будет *). * Редактирование: использование максимальных символов, вплоть до самого длинного символа символа слова ... так что строка имела бы 2 или 3 слова, возможно, до длины самого длинного слова.разделите строку предложения на подстроки = <длина самого длинного одиночного слова

Я нашел примеры, которые разбивают и подсчитывают массив слов, упорядочивают их по длине символов или добавляют разрывы строк в заданных символах, все пробелы и т. Д. Но никого, где я знаю достаточно, чтобы увидеть легкую модификацию для этого исход. Любая помощь приветствуется.

+0

Если вы когда-либо использовали php, перенос слов выполняется таким образом, где '16' представляет собой самое длинное слово. Найдите: '(?: (?: (?> (. {1,16}) (?: (? <= [^ \ S \ r \ n]) [^ \ S \ r \ n]? | (? = \ г \ п) | [^ \ S \ г \ п])) | ({1,16})) (?: \ г \ п) | (:.???? \ г \ п)) 'Replace:' $ 1 $ 2 \ r' – sln

ответ

1

Используя замену, вы можете заменить все пробелы \n, чтобы получить результат.

a = 'This show navigation menu when you scroll up page 0px up (in right-way). But trying to show after 200px (on page scroll-up) means not showing right way want show and hide after 200px when scroll \n up page.' 
 
b = a.replace(/\s{1,}/g,"\n"); 
 
alert(b)

+0

Rejith, это один из фрагментов, которые я уже пытался изменить. Я не ищу способ заменить все пробелы возвратом. Я пытаюсь разбить предложение на строки, которые равны или меньше по длине символов, чем самое длинное единственное слово предложения, но спасибо за ответ. –

+2

@ReginaS приведенный выше код соответствует вашему требованию. По определению, если вы разделите строку во всех пространствах, самая длинная подстрока будет самым длинным словом, а все остальные подстроки будут одинаковой длины или короче. Так что еще не хватает. –

+0

Да, этот скрипт дает мне стек из одного слова в первоначальном порядке и разделяется разрывами строк. Тем не менее, я пытаюсь держать слова вместе в одной строке, пока эта строка не будет превышать длину самого длинного слова. Таким образом, некоторые строки имели бы 2 или 3 слова с пробелами между ними, а не разрывами строк. Я пытаюсь создать текстовый блок в Photoshop динамически, который преобразуется в форму и изменяет размер, чтобы быть самым большим, чтобы заполнить контейнер. Извините, я не был более ясен с самого начала. –

0

Попробуйте использовать .split с регулярным выражением:

var a = 'This show navigation menu when you scroll up page 0px up (in right-way). But trying to show after 200px (on page scroll-up) means not showing right way want show and hide after 200px when scroll \n up page.' 
var outputArray = a.split(/\s+/); 
console.log(outputArray); 

Если вы хотите более прямой путь:

var a = 'This show navigation menu when you scroll up page 0px up (in right-way). But trying to show after 200px (on page scroll-up) means not showing right way want show and hide after 200px when scroll \n up page.' 

a.match(RegExp('.{0,' + Math.max.apply(0, a.match(/\w+/g).map(function(l) { 
    return l.length; 
})) + '}', 'g'); 

ES6:

a.match(RegExp(`.{0,${Math.max(...a.match(/\w+/g).map(l=>l.length))}}`), 'g') 

 Смежные вопросы

  • Нет связанных вопросов^_^