Как разделить символы, цифры и символы в Java?

pixelbits предоставил отличное решение, но оно не работает в последней версии Angular (v4.3.1), поскольку директивы обесцениваются из компонента. Мое решение основано на его ответе только, но работает с последним

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

upper-case.directive.ts:

     import { Directive, ElementRef, Input } from '@angular/core';
     @Directive({
     selector: '[UpperCase]',
     host: {
        '(input)': 'toUpperCase($event.target.value)',

     }

    })
    export class UpperCaseTextDirective  {

    @Input('UpperCase') allowUpperCase: boolean;
    constructor(private ref: ElementRef) {
    }

    toUpperCase(value: any) {
        if (this.allowUpperCase)
        this.ref.nativeElement.value = value.toUpperCase();
    }

    }

Вот соответствующий компонент приложения с шаблоном.

app.ts

    //our root app component
   import {Component, NgModule, VERSION} from '@angular/core'
   import {BrowserModule} from '@angular/platform-browser'
   import {UpperCaseTextDirective} from './upper-case.directive'

    @Component({
    selector: 'my-app',
    template: `
    

Hello {{name}}

Auto Capitalize True:
Auto Capitalize False:
`, }) export class App { name:string; allowEdit:boolean; constructor() { this.name = `Angular! v${VERSION.full}`; this.allowEdit= false; } } @NgModule({ imports: [ BrowserModule ], declarations: [ App,UpperCaseTextDirective ], bootstrap: [ App ] }) export class AppModule {}

Здесь Plnkr , которые демонстрируют это.

4
задан zyethan 15 January 2019 в 16:52
поделиться

2 ответа

Используйте комбинацию isAlphabetic и isDigit, в противном случае у вас есть специальный символ.

public class Separater {

static String splitString(String str) {
    String result = "";
    int i=0;
    while (i < str.length()) {//Using while instead of for, to avoid skipping characters due to auto increment by the loop.

        if (Character.isDigit(str.charAt(i))) {
            while (i < str.length() && Character.isDigit(str.charAt(i))) {
                result += str.charAt(i);
                i++;
            }
            result += "     ";
        } else if (Character.isAlphabetic(str.charAt(i))) {
            while (i < str.length() && Character.isAlphabetic(str.charAt(i))) {
                result += str.charAt(i);
                i++;
            }
            result += "     ";
        } else {
            while (i < str.length() && !Character.isAlphabetic(str.charAt(i)) && !Character.isDigit(str.charAt(i))) {
                result += str.charAt(i);
                i++;
            }
            result += "     ";
        }
    }
    return result;
}

public static void main(String[] args) {
    System.out.println(splitString("تجاؤي#*(اىيلاؤت678345شسسصي*&&*^*!!محجذلب"));
}
}

Вывод Обратите внимание, что пространство между подстрокой больше, но SO удаляет лишние пробелы!

تجاؤي # * (اىيلاؤت 678345 شسسصي & amp; ^ * !! محجذلب

0
ответ дан TiyebM 15 January 2019 в 16:52
поделиться

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

$ 0 является ссылкой на совпадение, найденное шаблоном, функция просто заменяет совпадение на себя, но с вкладками до и после добавления.

  /**
   * The regex used to find any symbols you are looking for.
   */
  private String SYMBOL_MATCHER_REGEX = "[0-9]+";

  /**
   * A replacement which adds space before and after the match.
   */
  private String REPLACEMENT_STRING = "   [110]    ";

  /** 
   * Compiled pattern for the SYMBOL_MATCHER_REGEX. 
   */
  private Pattern SYMBOL_PATTERN = Pattern.compile(SYMBOL_MATCHER_REGEX);

  public String formatUyghur(String uyghurText) {
    Matcher matcher = SYMBOL_PATTERN.matcher(uyghurText);

    return matcher.replaceAll(REPLACEMENT_STRING);
  }
0
ответ дан Salladsmannen 15 January 2019 в 16:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: