繁体   English   中英

如何使字符串在数字之间包含“:”仅避免在任何字符 java 之前或之后使用“:”?

[英]How to make a String include the ':' in between numbers only avoid the ':' before or after any character java?

我想用 SpannableString java 突出显示一个字符串

我有以下字符串

    textString = "2021-01-26 19:23:18 Lat: 26.369919 Long: 83.46433";

由此,我可以使用带有十进制数字的正则表达式突出显示字符串

Pattern regex = Pattern.compile("(\\d+(?:\\.\\d+)?)");

像这样

textString = " 2021 - 01 - 26 19 : 23 : 18纬度: 26.369919长: 83.46433 ";

但现在我想在数字之间制作包含':'的字符串,并希望在任何非数字字符之前或之后避免':'

我想像这样生产 output

textString = " 2021 - 01 - 26 19:23:18 Lat: 26.369919 Long: 83.46433 ";

只需在可选的非捕获组内包含:在您的角色 class 中,并使非捕获组匹配 0 次或多次:

\\d+(?:[:.]\\d+)*

正则表达式演示

替换将是:

"<b>$0</b>"

请注意,这将匹配具有多个点的数字,例如83.46433.135

如果要消除它,请使用:

\\d+(?:\\.\\d+|(?::\\d+)+)?

正则表达式演示 2

您可以在这里使用Html#fromHtml来获得一种相当简单的方法:

String textString = "2021-01-26 19:23:18 Lat: 26.369919 Long: 83.46433";
textString = textString.replaceAll("(\\d{4})-(\\d{2})-(\\d{2}) (\\d{2}:\\d{2}:\\d{2})", "<b>$1</b>-<b>$2</b>-<b>$3</b> <b>$4</b>");
textString = textString.replaceAll("(?<!\\S)(\\d+(?:\\.\\d+)?)(?!\\S)", "<b>$1</b>");
textView.setText(Html.fromHtml(textString));

如果您在正则表达式替换后记录textString的值,您将看到以下值:

<b>2021</b>-<b>01</b>-<b>26</b> <b>19:23:18</b> Lat: <b>26.369919</b> Long: <b>83.46433</b>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM