字符串替换不适用于某些西里尔字母

问题描述 投票:0回答:1

出于某种原因,我需要将西里尔字母“Ё”替换为“Е”。所以我写了这个简单的代码

someString = someString.toLowerCase().replace("ё", "е");

它在模拟器和我的大多数设备上运行得非常好,除了小米红米 9a。该应用程序根本不会取代小米上的“ё”。

可能出了什么问题?

android xiaomi
1个回答
1
投票

小米红米9a不使用西里尔字母“Ё”,而是使用“Ë”! :) 这是带有分音符号的拉丁字母“E”。不知道是键盘的原因还是别的原因。

所以我们需要将代码更改为这样

// The first character of pattern is cyrillic Ё, the second is latin E with diaeresis. 
// Some Xiaomi devices use the second variant instead of cyrillic letter
someString = someString.toLowerCase().replaceAll("[ёë]", "е");

或者这个

someString = someString.toLowerCase().replace("ё", "е").replace("ë", "е");
© www.soinside.com 2019 - 2024. All rights reserved.