随便输出一个字符串
String str ="45abc,+de==fg";
里面含有 abc,de,fg 三个单词
怎么处理能让单词反转,其他顺序不变呢
输出 “45cba,+ed==gf”;
这个处理字符串的方法应该怎么写啊
public class HelloWorld {
public static String revstr(String s)
{
char[] ch = s.toCharArray();
for (int i = 0; i < ch.length; i++)
{
if ((ch[i] >= 'A' && ch[i] <= 'Z') || (ch[i] >= 'a' && ch[i] <= 'z'))
{
int j = i + 1;
while (j < ch.length && ((ch[j] >= 'A' && ch[j] <= 'Z') || (ch[j] >= 'a' && ch[j] <= 'z'))) j++;
j--;
if (i != j)
{
for (int k = i; k <= (j - i) / 2 + i; k++)
{
//System.out.println("i" + i + "j" + j + "k" + k);
char temp = ch[k];
ch[k] = ch[j - k + i];
ch[j - k + i] = temp;
}
}
i = j;
}
}
return new String(ch);
}
public static void main(String[] args) {
System.out.println(revstr("45abc,+de==fg"));
}
}
45cba,+ed==gf
public class Re {
public static String reverse (String str){
Stack<Character> stack = new Stack<Character>();
StringBuffer sb = new StringBuffer();
for (int i = 0; i < str.length(); i++) {
//如果是字母就放入栈中,用来反转,不是字母就先将栈中所有数据取出,再把该字符加入到最后
if (str.charAt(i) >= 'a'&& str.charAt(i) <= 'z') {
stack.push(str.charAt(i));
}else {
while (!stack.isEmpty()) {
Character endCharacter = stack.pop();
sb.append(endCharacter);
}
sb.append(str.charAt(i));
}
//最后一个是字母的时候,栈非空,将所有字母取出
if (i==str.length()-1) {
while (!stack.isEmpty()) {
Character endCharacter = stack.pop();
sb.append(endCharacter);
}
}
}
return sb.toString();
}
public static void main(String[] args) {
String str ="45abc,+de==fg";
System.out.println(reverse(str));
}
}
public static void main(String[] args) {
String str ="45abc,+de==fg";
String str1 = str;
Map<String, String> replace = new HashMap<String, String>();
Pattern patternNotes = Pattern.compile("([a-z]|[A-Z]){2,}");
Matcher matcherNotes = patternNotes.matcher(str1);
while(matcherNotes.find()){
String group = matcherNotes.group();
str1 = str1.replaceFirst(group, "");
replace.put(group, flip(group));
matcherNotes = patternNotes.matcher(str1);
}
for (Map.Entry<String, String> entry : replace.entrySet()) {
str = str.replace(entry.getKey(), entry.getValue());
}
System.out.println(str);
}
private static String flip(String group) {
if(group == null || "".equals(group)){
return "";
}
StringBuffer result = new StringBuffer();
char[] charArray = group.toCharArray();
for (int i=charArray.length-1; i>=0; i--){
result.append(charArray[i]);
}
return result.toString();
}
String str ="45aBc+de.==fg,@hd";
String re = "[^A-Za-z]";
String result = str;
for (String split: str.split(re)){
if (split!=null && split.length()!=0) {
String reverse = new StringBuffer(split).reverse().toString();
result = result.replace(split,reverse);
}
}
System.out.println(result);
正则拆分替换