2012-03-29 111 views
0

嘿,我有一个字符串,例如:格式字符串

357902||190||RUE RACHELLE||ST|||LES CÈDRES|J7T1J9|QC 

我希望第一管delimter之前有权采取数字(从左至右)

和替换用另一个字符串我有字符串的一部分..

比我希望有一个新的构造字符串替换...

例如:

357902||190||RUE RACHELLE||ST|||LES CÈDRES|J7T1J9|QC 

可以变成:

48949168||190||RUE RACHELLE||ST|||LES CÈDRES|J7T1J9|QC 

任何帮助,将不胜感激

+0

感谢所有帮助! – OakvilleWork 2012-03-29 16:18:21

回答

3

我认为simpliest解决办法是:

  String s1 = "357902||190||RUE RACHELLE||ST|||LES CÈDRES|J7T1J9|QC"; 
      String s2 = "48949168"; 
      System.out.println(s2+s1.substring(s1.indexOf("||"))); 

输出

48949168 || || 190 RUE蕾切尔|| ||| ST LESCÈDRES | J7T1J9 | QC

s1.substring(s1.indexOf("||")为您提供:

|| 190 || RUE蕾切尔|| ST ||| LESCÈDRES| J7T1J9 | QC

2

您可以将字符串分割成2子,然后CONCAT您的另一个字符串与第2子。

String s = "357902||190||RUE RACHELLE||ST|||LES CÈDRES|J7T1J9|QC"; 
String s1 = "48949168"; 
String a[] = s.split(s,2); 
String b = s1+a[1]; 
System.out.println(b); 
+0

s.split(s,2)这个正则表达式的魔法是如何工作的? – 2012-03-29 04:49:49

+0

@GregKopff第二个参数将告诉JVM将字符串拆分为只有2个子字符串。这意味着JVM将检查正则表达式的第一次出现并从那里分割字符串。它不会检查字符串中进一步的正则表达式出现。 – 2012-03-29 04:52:24

+0

我感到困惑的是你提供给split()的regex是输入字符串本身。这只是如何匹配所需的位? (我不使用正则表达式)。你是否依靠管道分隔符也是一个特殊的正则表达式字符的事实? – 2012-03-29 05:21:03

0
String s2 = "357902||190||RUE RACHELLE||ST|||LES CÈDRES|J7T1J9|QC"; 
String s3 = "48949168"; 
System.out.println(s2.replaceAll(s2.substring(0,s2.indexOf("||")), s3)); 
+1

'replaceAll'将regex作为参数,所以如果你的子字符串导致无效模式,它将失败。这里使用这个有点危险。例如,如果子字符串等于“1”,例如所有的“1”都将被替换。不仅是第一部分。 – 2012-03-29 08:44:50