* (112770879) “Washington, D.c.” capitalized incorrectly
Theoretically "." is a case-ignorable character, so "D.C." is conceptually the same as "DC", whose capitalized mapping would be "Dc". This behavior doesn't seem to align with real-world use cases well though. Workaround this by splitting the string with "." and titlecasing each substring individually.
* (112770879) “Washington, D.c.” capitalized incorrectly, cont.
For FoundationPreview: Move String comparison utilities from FoundationEssentials fo _FoundationInternals so they can be accessed from FoundationInternalization too.
* Generalize trimming function to take a predicate block. Move this function to FoundationEssentials.
* Call `_trimmingWhitespaces()` instead of through CharacterSet.
* Review feedback: rename the function to whitespace from whitespaces
* Add tests
* Standarize whitespacing and remove spaces in empty line
* fix memory binding
* use `load(as:)` instead of binding memory
* Use temporary binding rather than `bindMemory`
* use `load(as:)` and `storeBytes(of:as:)` as appropriate
* use temporary binding rather than binding assertions
* add a note about index validation
* rdar://107955097 (FoundationPreview: Batch move string API (continued))
- Move localized uppercase and lowercase to FoundationLocalization
- if-def out of CharacterSet from FoundationPreview. It's not implemented at all there, and having a no-op stub is misleading
* rdar://107955097 (FoundationPreview: Batch move string API (continued))
- Move components separated by string and range of string functions
* rdar://107955097 (FoundationPreview: Batch move string API (continued))
Enable snake case options for JSON encoder and decoder. We haven't been able to enable this option because it needed `CharacterSet`, which hasn't been properly implemented for FoundationPreview. Now that we have `BuiltInUnicodeScalarSet`, which mirrors `CharacterSet`, we can switch to that and enable the options.
* rdar://107955097 (FoundationPreview: Batch move string API (continued))
- Move `StringProtocol.lineRange(for:)` and `paragraphRange(for:)` to FoundationEssentials
- Rename String+Regex.swift to RegexPatternCache.swift
- Consolidate extensions on various String family members and remove one redundant swift file
---------
Co-authored-by: I-Ting Tina Liu <iting_liu@apple.com>