diff --git a/Libraries/Text/RCTTextAttributes.m b/Libraries/Text/RCTTextAttributes.m
index a66386885b4..01131cfb20e 100644
--- a/Libraries/Text/RCTTextAttributes.m
+++ b/Libraries/Text/RCTTextAttributes.m
@@ -237,6 +237,23 @@ NSString *const RCTTextAttributesTagAttributeName = @"RCTTextAttributesTagAttrib
return effectiveBackgroundColor ?: [UIColor clearColor];
}
+static NSString *capitalizeText(NSString *text)
+{
+ NSArray *words = [text componentsSeparatedByString:@" "];
+ NSMutableArray *newWords = [NSMutableArray new];
+ NSNumberFormatter *num = [NSNumberFormatter new];
+ for (NSString *item in words) {
+ NSString *word;
+ if ([item length] > 0 && [num numberFromString:[item substringWithRange:NSMakeRange(0, 1)]] == nil) {
+ word = [item capitalizedString];
+ } else {
+ word = [item lowercaseString];
+ }
+ [newWords addObject:word];
+ }
+ return [newWords componentsJoinedByString:@" "];
+}
+
- (NSString *)applyTextAttributesToText:(NSString *)text
{
switch (_textTransform) {
@@ -248,7 +265,7 @@ NSString *const RCTTextAttributesTagAttributeName = @"RCTTextAttributesTagAttrib
case RCTTextTransformUppercase:
return [text uppercaseString];
case RCTTextTransformCapitalize:
- return [text capitalizedString];
+ return capitalizeText(text);
}
}
diff --git a/packages/rn-tester/js/examples/Text/TextExample.android.js b/packages/rn-tester/js/examples/Text/TextExample.android.js
index 2efb193a634..f1f15a242fe 100644
--- a/packages/rn-tester/js/examples/Text/TextExample.android.js
+++ b/packages/rn-tester/js/examples/Text/TextExample.android.js
@@ -798,6 +798,18 @@ class TextExample extends React.Component<{...}> {
This text should be CAPITALIZED.
+
+ Capitalize a date:
+
+ the 9th of november, 1998
+
+
+
+ Capitalize a 2 digit date:
+
+ the 25th of december
+
+
Mixed: uppercase
LoWeRcAsE
diff --git a/packages/rn-tester/js/examples/Text/TextExample.ios.js b/packages/rn-tester/js/examples/Text/TextExample.ios.js
index 623900fc9d9..b6272d55931 100644
--- a/packages/rn-tester/js/examples/Text/TextExample.ios.js
+++ b/packages/rn-tester/js/examples/Text/TextExample.ios.js
@@ -1160,6 +1160,18 @@ exports.examples = [
This text should be CAPITALIZED.
+
+ Capitalize a date:
+
+ the 9th of november, 1998
+
+
+
+ Capitalize a 2 digit date:
+
+ the 25th of december
+
+
Mixed: uppercase
LoWeRcAsE