Условное выражение для разбиения строки на две строки, основанное на пробелах и длине - PullRequest
0 голосов
/ 19 ноября 2018

У меня есть функция, которая разбивает строку на две строки.Он разбивает строку в зависимости от того, где находятся пробелы:

 splitSentenceInHalfCC(sentence: string): [string, string] {
    let middle = Math.floor(sentence.length / 2);
    let before = sentence.lastIndexOf(' ', middle);
    let after = sentence.indexOf(' ', middle + 1);


    if (middle - before < after - middle || after === -1) {
      middle = before;
    } else {
      middle = after;
    }

    let s1 = sentence.substr(0, middle);
    let s2 = sentence.substr(middle + 1);

    return [s1, s2];
  }

Что я хочу сейчас сделать, это добавить оператор if, где IF с нулевыми пробелами, он разбит строку на две строки послепервые 15 символов, скажем так.Как мне этого добиться?Я новичок в этом, поэтому не знаю, как поступить.Спасибо.

Example #1 input: This is a Store name and it is detailed.
Example #1 output: This is a Store name 
                   and it is detailed.
Example #2 input: Thisisjustalongstorenamewithnospaces.
Example #2 output: Thisisjustalongstorename
                   withnospaces.

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

Проверьте, есть ли в строке пробелы или нет.

 splitSentenceInHalfCC(sentence: string): [string, string] {
    let middle = Math.floor(sentence.length / 2);
    let before = sentence.lastIndexOf(' ', middle);
    let after = sentence.indexOf(' ', middle + 1);


    if (middle - before < after - middle || after === -1) {
      middle = before;
    } else {
      middle = after;
    }

    if( before === -1 && after === -1 ){
       middle = 35;
    }

    let s1 = sentence.substr(0, middle);
    let s2 = sentence.substr(middle + 1);

    return [s1, s2];
  }

Примечание. Возможно, вы захотите основать число 35 на длине строки.

0 голосов
/ 19 ноября 2018

Я думаю, все, что вам нужно сделать, это в самом начале функции проверить, есть ли в предложении .includes пробел - если нет, то вернуть массив с двумя элементами, предложение slice d изОт 0 до 35, а затем с 35 и далее.(Конечно, если вы хотите изменить количество символов, просто измените параметр 35 на .slice)

function splitSentenceInHalfCC(sentence) {
  if (!sentence.includes(' ')) {
    return [
      sentence.slice(0, 35),
      sentence.slice(35),
    ]
  }

  let middle = Math.floor(sentence.length / 2);
  let before = sentence.lastIndexOf(' ', middle);
  let after = sentence.indexOf(' ', middle + 1);


  if (middle - before < after - middle || after === -1) {
    middle = before;
  } else {
    middle = after;
  }

  let s1 = sentence.substr(0, middle);
  let s2 = sentence.substr(middle + 1);

  return [s1, s2];
}
console.log(splitSentenceInHalfCC('This is a Store name and it is detailed.'));
console.log(splitSentenceInHalfCC('Thisisjustalongstorenamewithnospaces.'));
...