programing

다트에서 문자열의 첫 글자를 대문자로 사용하는 방법은 무엇입니까?

bestprogram 2023. 7. 26. 22:16

다트에서 문자열의 첫 글자를 대문자로 사용하는 방법은 무엇입니까?

문자열의 첫 번째 문자를 대문자로 표시하면서 다른 문자의 대소문자를 변경하지 않으려면 어떻게 해야 합니까?

예를 들어 "this is string"은 "this is string"을 제공해야 합니다.

다트 버전 2.6 이후, 다트는 확장을 지원합니다.

extension StringExtension on String {
    String capitalize() {
      return "${this[0].toUpperCase()}${this.substring(1).toLowerCase()}";
    }
}

따라서 내선 번호를 다음과 같이 부를 수 있습니다.

import "string_extension.dart";

var someCapitalizedString = "someString".capitalize();

복사 위치:

extension StringCasingExtension on String {
  String toCapitalized() => length > 0 ?'${this[0].toUpperCase()}${substring(1).toLowerCase()}':'';
  String toTitleCase() => replaceAll(RegExp(' +'), ' ').split(' ').map((str) => str.toCapitalized()).join(' ');
}

용도:

// import StringCasingExtension

final helloWorld = 'hello world'.toCapitalized(); // 'Hello world'
final helloWorld = 'hello world'.toUpperCase(); // 'HELLO WORLD'
final helloWorldCap = 'hello world'.toTitleCase(); // 'Hello World'

다른 답변의 하위 문자열 구문 분석은 로케일 분산을 고려하지 않습니다.의 to Begining Of Sentence Case() 함수intl/intl.dart패키지는 기본 문장 구분과 터키어와 아제르바이잔어의 점선 "i"를 처리합니다.

import 'package:intl/intl.dart' show toBeginningOfSentenceCase;

print(toBeginningOfSentenceCase('this is a string'));
void main() {
  print(capitalize("this is a string"));
  // displays "This is a string"
}

String capitalize(String s) => s[0].toUpperCase() + s.substring(1);

DartPad에서 실행 중인 이 토막글을 참조하십시오. https://dartpad.dartlang.org/c8ffb8995abe259e9643

이 기능을 다루는 유틸리티 패키지가 있습니다.그것은 문자열에서 작동하는 더 좋은 방법들을 가지고 있습니다.

다음과 함께 설치:

dependencies:
  basic_utils: ^1.2.0

용도:

String capitalized = StringUtils.capitalize("helloworld");

Github:

https://github.com/Ephenodrom/Dart-Basic-Utils

너무 늦었지만, 난...


String title = "some string with no first letter caps";
    
title = title.replaceFirst(title[0], title[0].toUpperCase()); // Some string with no...

이 패키지는 Flot ReCase에서 사용할 수 있습니다. 이 패키지는 다음과 같은 다양한 케이스 변환 기능을 제공합니다.

  • 뱀 케이스
  • 점 케이스
  • 경로/사례
  • 격변의
  • 파스칼 케이스
  • 머리글 - 대/소문자
  • 제목 케이스
  • 카멜 케이스
  • 문장 대소문자
  • CONSTANT_CASE

    ReCase sample = new ReCase('hello world');
    
    print(sample.sentenceCase); // Prints 'Hello world'
    
void allWordsCapitilize (String str) {
    return str.toLowerCase().split(' ').map((word) {
      String leftText = (word.length > 1) ? word.substring(1, word.length) : '';
      return word[0].toUpperCase() + leftText;
    }).join(' ');
}
allWordsCapitilize('THIS IS A TEST'); //This Is A Test

이전에 Ephenodrom이 언급했듯이 basic_utils 패키지를 pubspec.yaml에 추가하여 다음과 같이 다트 파일에 사용할 수 있습니다.

StringUtils.capitalize("yourString");

이는 단일 기능에 대해서는 허용 가능하지만, 더 큰 일련의 작업에서는 어색해집니다.

Dart 언어 설명서에서 설명한 대로:

doMyOtherStuff(doMyStuff(something.doStuff()).doOtherStuff())

이 코드는 다음보다 훨씬읽을 수 있습니다.

something.doStuff().doMyStuff().doOtherStuff().doMyOtherStuff()

IDE가 제안할 수 있기 때문에 코드를 훨씬발견할 수 있습니다.doMyStuff()나고끝 something.doStuff()하지만 그들이 그들을 공격하는 것을 제안하지는 않을 것입니다.doMyOtherStuff(…)표정 주위에

이러한 이유로 String type(dart 2.6! 이후 가능)에 다음과 같은 확장 방법을 추가해야 한다고 생각합니다.

/// Capitalize the given string [s]
/// Example : hello => Hello, WORLD => World
extension Capitalized on String {
  String capitalized() => this.substring(0, 1).toUpperCase() + this.substring(1).toLowerCase();
}

점 표기법을 사용하여 호출합니다.

'yourString'.capitalized()

또는 값이 null일 수 있는 경우 호출에서 점을 '?'로 바꿉니다.

myObject.property?.toString()?.capitalized()

get: ^4.6.5를 float 포함 상태 관리로 사용하는 경우 자본화를 위한 내장 확장 기능이 있습니다.

        // This will capitalize first letter of every word
        print('hello world'.capitalize); // Hello World

        // This will capitalize first letter of sentence
        print('hello world'.capitalizeFirst); // Hello world

        // This will remove all white spaces from sentence
        print('hello world'.removeAllWhitespace); // helloworld

        // This will convert string to lowerCamelCase
        print('This is new world'.camelCase); // thisIsNewWorld

        // This will remove all white spaces between the two words and replace it with '-'
        print('This is new    world'.paramCase); // this-is-new-world
String capitalize(String s) => (s != null && s.length > 1)
    ? s[0].toUpperCase() + s.substring(1)
    : s != null ? s.toUpperCase() : null;

테스트를 통과합니다.

test('null input', () {
  expect(capitalize(null), null);
});
test('empty input', () {
  expect(capitalize(''), '');
});
test('single char input', () {
  expect(capitalize('a'), 'A');
});
test('crazy input', () {
  expect(capitalize('?a!'), '?a!');
});
test('normal input', () {
  expect(capitalize('take it easy bro!'), 'Take it easy bro!');
});

짧은 주석을 사용하여 null 및 빈 문자열 대소문자를 확인하려면 다음과 같이 하십시오.

  String capitalizeFirstLetter(String s) =>
  (s?.isNotEmpty ?? false) ? '${s[0].toUpperCase()}${s.substring(1)}' : s;

문자열 라이브러리의 capitalize() 메서드를 사용할 수 있으며, 현재 0.1.2 버전에서 사용할 수 있으며 pubspec.l:

dependencies:
  strings: ^0.1.2

다트 파일로 가져올 수 있습니다.

import 'package:strings/strings.dart';

이제 다음과 같은 프로토타입을 가진 방법을 사용할 수 있습니다.

String capitalize(String string)

예:

print(capitalize("mark")); => Mark 
String? toCapitalize(String? input) {
  if (input == null || input.isEmpty) return input;
  return '${input[0].toUpperCase()}${input.substring(1).toLowerCase()}';
}

또는 확장:

extension StringExtension on String {
  String? toCapitalize() {
    if (this == null || this.isEmpty) return this;
    return '${this[0].toUpperCase()}${this.substring(1).toLowerCase()}';
  }
}

또한 문자열이 null인지 비어 있는지 확인해야 합니다.

String capitalize(String input) {
  if (input == null) {
    throw new ArgumentError("string: $input");
  }
  if (input.length == 0) {
    return input;
  }
  return input[0].toUpperCase() + input.substring(1);
}

이것은 String 클래스 메소드를 사용하여 다트에서 String을 대문자로 만드는 또 다른 대안입니다.

var str = 'this is a test';
str = str.splitMapJoin(RegExp(r'\w+'),onMatch: (m)=> '${m.group(0)}'.substring(0,1).toUpperCase() +'${m.group(0)}'.substring(1).toLowerCase() ,onNonMatch: (n)=> ' ');
print(str);  // This Is A Test 

처음부터 다트에서 이것을 사용할 수 없다는 것이 이상합니다.아래는 자본화를 위한 확장입니다.String:

extension StringExtension on String {
  String capitalized() {
    if (this.isEmpty) return this;
    return this[0].toUpperCase() + this.substring(1);
  }
}

그것은 그것을 합니다.String 있지 첫 합니다. 그런 다음 첫 번째 문자를 대문자로 표시하고 나머지 문자를 추가합니다.

용도:

import "path/to/extension/string_extension_file_name.dart";

var capitalizedString = '${'alexander'.capitalized()} ${'hamilton, my name is'.capitalized()} ${'alexander'.capitalized()} ${'hamilton'.capitalized()}');
// Print result: "Alexander Hamilton, my name is Alexander Hamilton"

코드 단위가 아닌 문자 사용

Dart 문자열 조작을 올바르게 수행했다는 기사에서 설명한 대로(시나리오 4 참조), 사용자 입력을 다룰 때마다 사용해야 합니다.characters지수보다는.

// import 'package:characters/characters.dart';

final sentence = 'e\u0301tienne is eating.'; // étienne is eating.
final firstCharacter = sentence.characters.first.toUpperCase();
final otherCharacters = sentence.characters.skip(1);
final capitalized = '$firstCharacter$otherCharacters';
print(capitalized); // Étienne is eating.

이 예제에서는 인덱스를 사용하더라도 여전히 작동하지만 사용 습관을 갖는 것이 좋습니다.characters.

캐릭터 패키지는 Flutter와 함께 제공되므로 가져올 필요가 없습니다.순수 다트 프로젝트에서는 가져오기를 추가해야 하지만 pubspec.yaml에 아무것도 추가할 필요가 없습니다.

범위 내 확인됨.
> 2 기준 관용구 > 2.16.1

함수로서

String capitalize(String str) =>
    str.isNotEmpty
        ? str[0].toUpperCase() + str.substring(1)
        : str;

그 연장선상

extension StringExtension on String {
    String get capitalize => 
        isNotEmpty 
            ? this[0].toUpperCase() + substring(1) 
            : this;
}

이 코드는 저에게 효과가 있습니다.

String name = 'amina';    

print(${name[0].toUpperCase()}${name.substring(1).toLowerCase()});

가장 간단한 대답은 다음과 같습니다.

먼저 인덱스를 사용하여 문자열의 첫 번째 문자를 대문자로 만든 다음 문자열의 나머지를 연결합니다.

여기서 사용자 이름은 문자열입니다.

username[0]. to UpperCase() + username.하위 문자열(1);

extension StringExtension on String {
  String capitalize() {
    return this
        .toLowerCase()
        .split(" ")
        .map((word) => word[0].toUpperCase() + word.substring(1, word.length))
        .join(" ");
  }
}

관심이 있는 사람이라면, 이것은 모든 문자열에서 작동해야 합니다.

var original = "this is a string";
var changed = original.substring(0, 1).toUpperCase() + original.substring(1);

다음 기능을 사용할 수 있습니다.

String capitalize(String str) {
  return str
      .split(' ')
      .map((word) => word.substring(0, 1).toUpperCase() + word.substring(1))
      .join(' ');
}

더 인기 있는 다른 답변 중 일부는 처리되지 않는 것 같습니다.null그리고.''저는 클라이언트 코드에서 그러한 상황을 다룰 필요가 없는 것을 선호합니다. 저는 단지 원합니다.String무슨 일이 있어도 답례로 - 그것이 경우에 빈 것을 의미하더라도.null.

String upperCaseFirst(String s) => (s??'').length<1 ? '' : s[0].toUpperCase() + s.substring(1)

사용하기 쉬운 Text_Tools 패키지를 사용할 수 있습니다.

https://dev.dev/message/text_tools

코드는 다음과 같습니다.

//This will print 'This is a string
print(TextTools.toUppercaseFirstLetter(text: 'this is a string'));

이 문제를 해결하기 위해 찾은 또 다른 건강하지 못한 방법은

String myName = "shahzad";

print(myName.substring(0,1).toUpperCase() + myName.substring(1));

이것은 같은 효과를 낼 것이지만 그것을 하는 꽤 더러운 방법입니다.

Hannah Stark 응답을 사용했지만, 문자열이 비어 있으면 앱이 충돌합니다. 따라서 확장자가 있는 솔루션의 개선된 버전이 여기 있습니다.

extension StringExtension on String {
  String capitalize() {
    if(this.length > 0) {
      return "${this[0].toUpperCase()}${this.substring(1)}";
    }
    return "";
  }
}

다음을 사용할 수 있습니다.

extension EasyString on String {
  String toCapitalCase() {
   var lowerCased = this.toLowerCase();
   return lowerCased[0].toUpperCase() + lowerCased.substring(1);
 }
} 

확장 없이 단순:

title = "some title without first capital"

title.replaceRange(0, 1, title[0].toUpperCase())

// Result: "Some title without first capital"

언급URL : https://stackoverflow.com/questions/29628989/how-to-capitalize-the-first-letter-of-a-string-in-dart