【问题标题】:Conditional statement to break string into two lines, based on spaces and length根据空格和长度将字符串分成两行的条件语句
【发布时间】:2019-04-21 13:32:35
【问题描述】:

我有一个函数可以将字符串分成两行。它根据空格所在的位置打破字符串:

 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 语句,如果有零个空格,它将在前 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.

【问题讨论】:

  • @CertainPerformance 我刚刚在我想要实现的输入和输出底部的示例中更新了我的问题。
  • 谢谢,现在已经很清楚了,虽然整个字符串Thisisjustalongstorenamewithnospaces.有36个字符长,所以如果你想在前35个字符之后拆分,会不会导致["Thisisjustalongstorenamewithnospaces", "."]?跨度>
  • @CertainPerformance 这只是一个例子。为此,假设我们将其拆分为 15 个字符。

标签: javascript string function conditional


【解决方案1】:

检查字符串是否有空格。

 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 基于字符串长度。

【讨论】:

    【解决方案2】:

    我认为你需要做的就是,在函数的最开始,检查句子 .includes 是否有空格 - 如果不是,则返回一个包含两个项目的数组,句子 sliced 来自从 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.'));

    【讨论】:

      猜你喜欢
      • 2017-07-05
      • 2022-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-05
      • 1970-01-01
      • 2022-11-18
      相关资源
      最近更新 更多