regex 土耳其语大写加点i在Angular 2大写管道中出现

mwyxok5s  于 2023-03-04  发布在  Angular
关注(0)|答案(1)|浏览(139)

我有一个大写管道。几乎所有的字符都是大写的。土耳其语的"i"字符被正确地转换为"I"。但是,当"i"字符应该转换为""字符时,它被转换为"I"。

    • 示例1**:rmak =〉伊尔马克(正确)。
    • 示例2**:ismail =〉Ismail(不正确,应为smail)。

我的代码如下:

import { Pipe, PipeTransform } from '@angular/core';

@Pipe({name: 'capitalize'})
export class CapitalizePipe implements PipeTransform {

   transform(value: string, args: string[]): any {
    if (!value) return value;

    return value.replace(/[çğıöşüa-zA-z]\S*/g, function(txt) {
        return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
    });
  }

}
x8diyxa7

x8diyxa71#

1.首先,创建一个新文件,并将其命名为“titlecase-turkish.pipe.ts”。
1.打开该文件并添加以下代码:

import { Pipe, PipeTransform } from '@angular/core';

@Pipe({
  name: 'titlecaseTurkish'
})
export class TitleCaseTurkishPipe implements PipeTransform {
  transform(value: string): string {
    if (!value) return null;
    let words = value.split(' ');
    for (var i = 0; i < words.length; i++) {
      words[i] = words[i].toLocaleLowerCase('tr-TR');
      words[i] = words[i].charAt(0).toLocaleUpperCase('tr-TR') + words[i].slice(1);
    }
    return words.join(' ');
  }
}

1.以上代码实现了TitleCaseTurkishPipe的基本功能。它按空格拆分传入的字符串值,并将每个单词的第一个字母转换为大写,同时将所有其他字母转换为小写。为了正确地将土耳其语字符大写,使用了toLocaleLowerCase()和toLocaleUpperCase()方法。
1.要使用TitleCaseTurkishPipe,首先需要在AppModule中声明它。为此,请添加以下代码:

import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';
import { AppComponent } from './app.component';
import { TitleCaseTurkishPipe } from './titlecase-turkish.pipe';

@NgModule({
  imports: [BrowserModule, FormsModule],
  declarations: [AppComponent, TitleCaseTurkishPipe],
  bootstrap: [AppComponent]
})
export class AppModule { }

1.现在可以在HTML文件中使用TitleCaseTurkishPipe。例如,以下代码使用TitleCaseTurkishPipe设置“name”变量值的格式:

<h1>{{ name | titlecaseTurkish }}</h1>

相关问题