【问题标题】:Manipulate string from input field into separate arrays depending on whether characters are separated by commas or spaces根据字符是用逗号还是空格分隔,将输入字段中的字符串操作到单独的数组中
【发布时间】:2021-01-10 23:50:41
【问题描述】:

我有一个表单输入字段,我需要从中获取字符串值,并根据单词以逗号或空格结尾的天气将输入分组到单独的数组中。

我尝试获取输入字符串,然后使用逗号作为分隔符拆分字符串,然后将其推送到 commaArray,然后过滤该数组以获取由空格分隔的值并将其推送到空格数组。 我没有取得太大的成功。我还需要将输入字段中的最后一个单词与空格数组分组,所以基本上如果它不以逗号结尾,则该单词将与 spaceSeparatedArray 分组。

我也添加了代码并在 stackblitz 中重新创建 - 链接如下。

https://stackblitz.com/edit/primeng-chips-demo-ss6jy4?file=src%2Fapp%2Fapp.component.html

输入字符串
"a, b, cd ef gh, ijkl, mnop"

所需的输出数组:
commaSeparatedArray = ["a", "b", "gh", "ijkl"]

spaceSeparatedArray = ["cd", "ef", "mnop"]

HTML

<form
[formGroup]="aForm"
(ngSubmit)="onSubmit()">

Value: {{ aForm.value | json }}

  <label>Comma Separator</label>
  
  <input
  formControlName="inputString"
  >
  <button type="submit">Submit</button>
</form>

打字稿

import { Component } from '@angular/core';
import {FormBuilder, FormControl, FormGroup} from '@angular/forms'
@Component({
  selector: 'app-root',
  templateUrl: './app.component.html'
})
export class AppComponent {

    valuesArray: [];
    
    
  aForm: FormGroup;

  constructor(
    private _formBuilder: FormBuilder
  ){
    this.aForm = this._formBuilder.group({
      inputString: new FormControl()
    })

  }
  // INPUT: 
  // a, b, cd ef gh, ijkl mnop

    onSubmit() {   
      let stringIn = this.aForm.get('inputString').value;
      let commaSeparatedArray = [];
      let spaceSeparatedArray = [];

      stringIn = stringIn.split(',');
      for(let i = 0; i <= stringIn.length; i++) {
        commaSeparatedArray.push(stringIn[i]);
      }
           

      spaceSeparatedArray = commaSeparatedArray.filter(a=> a.includes(' '));

      // OUTPUT 

      console.log("SpaceSeparatedArray:  " +spaceSeparatedArray)

      console.log("CommaSeparatedArray:  " + commaSeparatedArray);
  

    }
}

谢谢

【问题讨论】:

    标签: javascript arrays angular typescript filter


    【解决方案1】:

    这应该可行:

    const str = "a, b, cd ef gh, ijkl, mnop"
    
    const commaSeparatedArray = str.split(' ')
    .filter(s => s.slice(-1) === ',').map(s => s.replace(',', ''));
    
    console.log(commaSeparatedArray);
    
    const spaceSeparatedArray = str.split(' ')
    .filter(s => s.slice(-1) !== ',');
    
    console.log(spaceSeparatedArray);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-16
      • 1970-01-01
      • 1970-01-01
      • 2019-12-04
      相关资源
      最近更新 更多