Android 字符串中数字替换为阿拉伯语或波斯语

  • 前言
  • 使用
  • 结尾

前言

在开发中需要将字符串中的数字转成波斯语中的数字,随后便写下了这篇文章,希望有所帮助

使用

直接上代码

import android.text.TextUtils;
import android.util.Log;import java.util.Locale;
import java.util.regex.Matcher;
import java.util.regex.Pattern;/*** @author huyl* @date 2022/10/11 14:24** <p>*/
public class LanguageFormatHelper {private static final String TAG = "LanguageFormatHelper";//这里在每个字符前后拼接unicode是防止appendReplacement方法导致字符反转private static String[] AF09 = new String[]{"\u202D٠\u202C", "\u202D١\u202C", "\u202D٢\u202C", "\u202D٣\u202C", "\u202D۴\u202C","\u202D۵\u202C", "\u202D۶\u202C", "\u202D٧\u202C", "\u202D٨\u202C", "\u202D٩\u202C"};/*** 将字符串中的0-9转为波斯语 其他语言暂时不管* @return */public static String toAFStr(String value) {String locale = Locale.getDefault().toString();Log.d(TAG, "toAFStr: value = " + value + ", locale = " + locale);//这里是判断语言是否为波斯语  不是则不做转换if (TextUtils.isEmpty(value) || !"fa_AF".equals(locale)) {return value;}try {String patt = "\\d";//找出所有数字Pattern r = Pattern.compile(patt);Matcher m = r.matcher(value);m.reset();StringBuffer sb = new StringBuffer();while (m.find()) {//拿出匹配到的数字String group = m.group();int v = Integer.valueOf(group);m.appendReplacement(sb, AF09[v]);}return m.appendTail(sb).toString();} catch (Exception e) {e.printStackTrace();Log.d(TAG, "toAFStr: e = " + e.getMessage(), e);return value;}}/*** 纯数字文本请使用这个方法 自带String.format可以根据语音自动转换* @param value* @return*/public static String toIntAFStr(String value) {String locale = Locale.getDefault().toString();Log.d(TAG, "toIntAFStr: value = " + value + ", locale = " + locale);//这里是判断语言是否为波斯语  不是则不做转换if (TextUtils.isEmpty(value) || !"fa_AF".equals(locale)) {return value;}try {int v = Integer.valueOf(value);return String.format(Locale.getDefault(), "%d", v);} catch (Exception e) {e.printStackTrace();Log.d(TAG, "toIntAFStr: e = " + e.getMessage(), e);return value;}}}

结尾

波斯语在使用append中会出现字符串反转,所以左右都有拼接unicode,这里感谢[bug修复方案分享]阿拉伯文导致TextView显示顺序左右颠倒
字符串替换方法感谢Java如何使用正则表达式实现替换文本功能

Android 字符串中数字替换为阿拉伯语或波斯语相关推荐

  1. iOS 改变字符串中数字的颜色

    匹配中文字符 [\u4e00-\u9fa5] 匹配双字节字符(包括汉字在内) [^\x00-\xff] 匹配网址:[a-zA-z]+://[^\s]* 匹配国内电话 \d{3}-\d{8}|\d{4} ...

  2. python统计字符串数字个数_python统计字符串中数字个数_后端开发

    python怎么随机生成奇数_后端开发 python随机生成奇数的方法:导入random模块,使用random模块生成随机数,然后判断生成的随机数是否为奇数,若是奇数就加入列表.使用此方法得到的列表包 ...

  3. php 正则获取数字,php结合正则获取字符串中数字的几种方法

    本篇文章主要介绍php结合正则获取字符串中数字的几种方法,感兴趣的朋友参考下,希望对大家有所帮助. php结合正则获取字符串中数字<?php $patterns = "/\d+/&qu ...

  4. OC特有语法:分类category,给NSString增加方法计算字符串中数字的个数

    1:分类的使用场景:想对一个类,扩充一些功能,而又不改变原来类的模型,也不用继承,这时OC中的特有语法:分类可以做到: 当然分类也是一个类,也需要声明和实现,声明在.h文件中,实现在.m文件中,格式如 ...

  5. php的strpos不支持数字,php使用strpos判断字符串中数字类型子字符串出错的解决方法 原创...

    php使用strpos判断字符串中数字类型子字符串出错的解决方法 原创 这里有新鲜出炉的 PHP 面向对象编程,程序狗速度看过来! PHP 开源脚本语言 PHP(外文名: Hypertext Prep ...

  6. python提取字符串中数字_EXCEL数字在字符串中间怎么提取?

    昨天我们讲了字符串中数字在前面或在后面时的提取办法,今天我们来看下若是数字在中间该怎么办?在解决问题之前我们先学习下会用到的另外两个函数,ISNUMBER,MATCH. 1.ISNUMBER ISNU ...

  7. php判断是字符串类型,php使用strpos判断字符串中数字类型子字符串出错的解决方法 原创...

    本文实例讲述了php使用strpos判断字符串中数字类型子字符串出错的解决方法.分享给大家供大家参考,具体如下: 一.问题: 最近的开发中在程序代码里有一个随机数是否在给定字符串里的判断,我用了如下的 ...

  8. oracle 字符串中数字转中文大写,金额钱数转中文大写

    oracle 中字符串保函数字和非数字,现将字符串中数字转成中文的大写 CREATE OR REPLACE FUNCTION TO_UPPER_CNY(YEAR_IN IN VARCHAR2)RETU ...

  9. 取出字符串中数字的最大值

    package 算法; public class 取出字符串中数字的最大值 {     public static void main(String[] args) {         String ...

最新文章

  1. 服务器控件调用JS方法
  2. linux下安装监控网络流量工具Iptraf
  3. 0宽字符加密_使用 Go 语言实现凯撒加密
  4. Android实现自定义的 时间日期 控件
  5. 玩转git-flow工作流-分支解析
  6. 使用jOOQ DSL
  7. PS教程第十八课:放大缩小
  8. u盘装linux7.2,u盘安装centos 7.2
  9. 究竟哪种取数据的方式最快?
  10. GdiPlus[47]: IGPMatrix 矩阵(二)
  11. 一阶线性微分方程的初等积分法例题
  12. 从HighGUI的一段代码中看OpenCV打开视频的方式
  13. android 二进制编辑器,二进制编辑器 (c + +)
  14. 点云应用——三维空间边界点排序+机器人轨迹引导(1)
  15. IP静态路由实验(基于华为eNSP模拟器)
  16. 什么是计算机剪贴板(粘贴板)?
  17. 深光标准技术:谷歌GMS认证是什么?谷歌AER认证是什么?GMS认证的费用跟周期是多少??
  18. sodo 赋予非管理员用户临时权限
  19. 第四章课后习题-用Python实现羊车门问题,最大公约数计算,猜字游戏,统计不同字符个数。
  20. iOS 判断手机型号及系统版本(最新)持续更新

热门文章

  1. 使用dataTable完成客户端分页
  2. C语言基于paho实现MQTT客户端实战案例
  3. iPhone 9.3.3 不完美越狱后 抹除网络设置 Cydia闪退 手机越狱修复
  4. #798. 徐老师的二维动规(二维前缀和优化+dp)
  5. 天视通摄像头设置教程_天视通网络摄像头设置自动获取IP后无法连接电脑,怎么处理?...
  6. android8.1模拟器 黑屏,Win 8/8.1系统使用天天安卓模拟器无法开启虚拟化解决方法...
  7. 献给入门小白的MySQL学习笔记+案例
  8. java e e_java – e.getMessage()和e.getLocalizedMessage()之间的区别
  9. matlab背景换为黑色的,matlab、opencv护眼模式之黑色主题
  10. 关于暂停博客评论的紧急公告!