Skip to content

unicode-rs/unicode-segmentation

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
February 6, 2022 18:33
February 3, 2017 16:51
October 29, 2019 13:16
April 14, 2015 16:59
January 30, 2023 15:21
March 13, 2023 16:53

Iterators which split strings on Grapheme Cluster or Word boundaries, according to the Unicode Standard Annex #29 rules.

Build Status

Documentation

use unicode_segmentation::UnicodeSegmentation;

fn main() {
    let s = "a̐éö̲\r\n";
    let g = s.graphemes(true).collect::<Vec<&str>>();
    let b: &[_] = &["a̐", "é", "ö̲", "\r\n"];
    assert_eq!(g, b);

    let s = "The quick (\"brown\") fox can't jump 32.3 feet, right?";
    let w = s.unicode_words().collect::<Vec<&str>>();
    let b: &[_] = &["The", "quick", "brown", "fox", "can't", "jump", "32.3", "feet", "right"];
    assert_eq!(w, b);

    let s = "The quick (\"brown\")  fox";
    let w = s.split_word_bounds().collect::<Vec<&str>>();
    let b: &[_] = &["The", " ", "quick", " ", "(", "\"", "brown", "\"", ")", "  ", "fox"];
    assert_eq!(w, b);
}

no_std

unicode-segmentation does not depend on libstd, so it can be used in crates with the #![no_std] attribute.

crates.io

You can use this package in your project by adding the following to your Cargo.toml:

[dependencies]
unicode-segmentation = "1.10.1"

Change Log

1.7.1

  • Update docs on version number

1.7.0

  • #87 Upgrade to Unicode 13
  • #79 Implement a special-case lookup for ascii grapheme categories
  • #77 Optimization for grapheme iteration

1.6.0

  • #72 Upgrade to Unicode 12

1.5.0

  • #68 Upgrade to Unicode 11

1.4.0

  • #56 Upgrade to Unicode 10

1.3.0

  • #24 Add support for sentence boundaries
  • #44 Treat gc=No as a subset of gc=N

1.2.1

  • #37: Fix panic in provide_context.
  • #40: Fix crash in prev_boundary.

1.2.0

  • New GraphemeCursor API allows random access and bidirectional iteration.
  • Fixed incorrect splitting of certain emoji modifier sequences.

1.1.0

  • Add as_str methods to the iterator types.

1.0.3

  • Code cleanup and additional tests.

1.0.1

  • Fix a bug affecting some grapheme clusters containing Prepend characters.

1.0.0

  • Upgrade to Unicode 9.0.0.

About

Grapheme Cluster and Word boundaries according to UAX#29 rules

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Packages

No packages published