首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java字符串正则表达式替换

Java字符串正则表达式替换
EN

Stack Overflow用户
提问于 2015-12-24 06:01:19
回答 1查看 147关注 0票数 0

我的字符串结构如下

字符1-3是大写字母,包括诸如Ň

字符4-7永远是数字.

第八是空间

9是正斜杠。

第10空间

11岁以上是号码。

代码语言:javascript
复制
String str1  = "DIW785o / 42";    // expected result "DIW7850 / 42"
String str2  = "QLR357Ï / 11";    // expected result  "QLR3571 / 11"
String str3  = "UÜÈ7477 / 00";    // expected result  "UÜÈ7477 / 00"
String str4  = "A / P8538 / 28";  //  expected result "AÏP8538 / 28"
String str5  = "CV0875Z / 01";    // expected result "CVO8752 / 01"
String str6  = "SW / 2188 / 38";  // expected result "SWÏ2188 / 38"

我想替换前三个字符,如

代码语言:javascript
复制
replaceAll("[2]", "Z")
.replaceAll("[0]", "O")
.replaceAll("[5]", "S")
.replaceAll(" // ","Ï)    // replace space forward_slash space with Ï

以及数字与以下数字的位置

代码语言:javascript
复制
  .replaceAll("(?i)L|(?i)I", "1")
        .replaceAll("(?i)o", "0")
        .replaceAll("(?i)s", "5")
        .replaceAll("(?i)z", "2")       
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-24 09:01:53

我想说没有正则表达式更容易,因为您想替换String,但只有当它们处于特定位置时:

检查/是否位于前7个字符中,并将其替换为Ï

代码语言:javascript
复制
if(input.indexOf(" / ") < 7 ){
    input = input.replaceFirst(" / ", "Ï");
}

那么你所有的弦都有相同的长度。现在将它们切成数字/字母部分,并替换您想要的所有内容:

代码语言:javascript
复制
String letterPart = input.substring(0,3);
String numberPart= input.substring(3,7);
String rest = input.substring(7);

letterPart = letterPart.replace("0", "O");

numberPart = numberPart.replace("o", "0");
numberPart = numberPart.replace("Ï", "1");
numberPart = numberPart.replace("Z", "2");

然后把所有的东西重新组合起来:

代码语言:javascript
复制
String result = letterPart + numberPart + rest;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34448033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档