Мне нужно заменить строку:Нужна помощь в string.replaceAll
"abc.T.T.AT.T"
в строку со всеми одним T
быть заменен TOT
как
"abc.TOT.TOT.AT.TOT"
strings.replaceAll
не работает для этого.
Мне нужно заменить строку:Нужна помощь в string.replaceAll
"abc.T.T.AT.T"
в строку со всеми одним T
быть заменен TOT
как
"abc.TOT.TOT.AT.TOT"
strings.replaceAll
не работает для этого.
String input = "abc.T.T.AT.T";
StringTokenizer st = new StringTokenizer(input,".");
StringBuffer sb = new StringBuffer();
while(st.hasMoreTokens()){
String token = st.nextToken();
if(token.equals("T")){
token= token.replace("T", "TOT");
}
sb.append(token+".");
}
if(!(input.lastIndexOf(".")==input.length()-1))
sb.deleteCharAt(sb.lastIndexOf("."));
System.out.println(sb.toString());
Надежда это то, что вам требуется ....
Это добавит дополнительный период до конца. – jlordo
В конце концов просто сделайте ..sb.deleteCharAt (sb.lastIndexOf (".")); –
Это не сработает для 'abt.T.T.'. Я отношусь к аллергии на решения, которые работают только на некоторые входы. (Нет нисходящего, но я был близок к тому, чтобы дать один.) –
осмотреться решит вашу проблему:
s.replaceAll("(?<=\\.|^)T(?=\\.|$)", "TOT");
, если вы:
String s = "T.T.T.AT.T.fT.T.T";
System.out.println(s.replaceAll("(?<=\\.|^)T(?=\\.|$)", "TOT"));
выход будет:
TOT.TOT.TOT.AT.TOT.fT.TOT.TOT
только из любопытства, что происходит, когда строка имеет что-то вроде этого: - '. (Space) T (пробел) (пробел) .'? – SudoRahul
, то инструкция replace не будет работать. Он основан только на примере OP. «точка» разделена. что он не упомянул определение «единственного Т». по крайней мере, мои коды должны работать для его примера. – Kent
Эквивалентное, но супер запутанное регулярное выражение '(? nhahtdh
Вы можете использовать word boundaries для выполнения этой задачи:
text.replaceAll("\\bT\\b", "TOT");
Это заменит «Т», только если он не предшествует и не следуют другим словом характер (не означает, что никакой другой буквы или цифры до или вперед).
Это будет работать для вашего примера. Но вы должны знать, что это будет соответствовать всем «Т» с символами без слова. Заменено будет, например:
но не "Т" в:
что вы имеете в виду singe T's? Является ли один T рассмотренным T между 2 точками или T, у которого нет другого T рядом с ним? –
Попробуйте это http://stackoverflow.com/questions/1277157/java-regex-replace-with-capturing-group –