java字符串替换题?

给定一个字符串“aaa果4金5a”要求,如果出现把数字后面的字符替换成数字的个数个。比如这个字符串要求被替换成“aaa果金金金金aaaaa”要求,中文字符不能英文都能替换... 给定一个字符串“aaa果4金5a”
要求,如果出现把数字后面的字符替换成数字的个数个。
比如这个字符串要求被替换成“aaa果金金金金aaaaa”
要求,中文字符不能英文都能替换。要求方法简单可行。谁的方法最简单最好分就给谁。
如果觉得问题太难,就该成不考虑中文的情况,假定全为英文和数字.
展开
 我来答
henterji
推荐于2016-11-25 · TA获得超过2973个赞
知道大有可为答主
回答量:1835
采纳率:0%
帮助的人:1867万
展开全部
public class Test {
public static void main(String[] args) {
String input = "aaa果4金5a";
StringBuffer sb = new StringBuffer();
char[] c = input.toCharArray();
for (int i = 0; i < c.length; i++) {
if (c[i] >= '0' && c[i] <= '9') {
int tmp = Integer.valueOf(String.valueOf(c[i]));
for (int j = 0; j < tmp; j++) {
sb.append(c[i + 1]);
}
i++;
} else {
sb.append(c[i]);
}
}

System.out.println(sb.toString());
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
1997排长
高粉答主

2016-01-10 · 说的都是干货,快来关注
知道大有可为答主
回答量:1.1万
采纳率:0%
帮助的人:791万
展开全部
替换字符串中的子字符串的代码如下:
/** * * 把字符串中的每个空格替换成%20.如We are happy,则输出We%20are%20happy * */public class ReplaceSpace { public void repalce(char[] oldchar,char[] replacement){ int sumOfSpace = 0; for(int i = 0;i < oldchar.length;i++){ if(oldchar[i] == ' ') sumOfSpace++; } if(sumOfSpace == 0){ return ; } char [] newchar = new char[oldchar.length + (replacement.length-1) * sumOfSpace]; //指向被替换字符串的最后一个元素 int pOld = oldchar.length - 1; //指向替换字符串的最后一个元素 int pNew = newchar.length - 1; while(pNew >= 0){ if(oldchar[pOld] == ' '){ pOld--; for(int j = replacement.length - 1;j >= 0;j--){ newchar[pNew--] = replacement[j]; } }else{ newchar[pNew--] = oldchar[pOld--]; } } for(char c:newchar){ System.out.print(c); } } public static void main(String[] args) { char [] ch = "We are happy".toCharArray(); ReplaceSpace rs = new ReplaceSpace(); rs.repalce(ch, "%20".toCharArray()); }}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tmwdf
2008-09-17 · TA获得超过1009个赞
知道答主
回答量:113
采纳率:0%
帮助的人:79万
展开全部
java不熟,我用php写的,相信java有类似函数
<?php
echo $s="aaa果4金5a";
$str='';
$chars = preg_split('/\d+/', $s,2); //根据第一次出现的数字分两段
$chars1 = explode($chars[0],$s); //取得后面那一段
$chars2 = preg_split('/\d+/',$chars1[1]); //根据数字分成N段
$chars3 = preg_split('/\D+/',$chars1[1]); //根据非数字分成N段
for ($i=0;$i<count($chars3)-1;$i++){ //开始组合了,自己看
for($j=0;$j<$chars3[$i];$j++){
$str.=$chars2[$i+1];
}
}
echo $chars[0].$str; //组合完毕,搞定
?>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fish0715008
2008-09-17 · TA获得超过637个赞
知道答主
回答量:297
采纳率:0%
帮助的人:140万
展开全部
public class Test {

/**
* 这里假设数字都是一位数
* @param args
*/
public static void main(String[] args) {
String str = "aaa果4金你你我我5a";
char[] ch = str.toCharArray();
StringBuffer sb = new StringBuffer();
for(int i = 0; i < ch.length; i++) {
if(ch[i] >= '0' && ch[i] <= '9') {
int n = Character.getNumericValue(ch[i]);
if(i < ch.length -1) {
for(int j = 0; j < n-1; j++) {
sb.append(ch[i+1]);
}
}
}else {
sb.append(ch[i]);
}
}
System.out.println(sb.toString());
}
}

我写得很快啊,怎么就冒出来两个回答的了呢,:(
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友a53726a
2008-09-17 · TA获得超过372个赞
知道小有建树答主
回答量:352
采纳率:0%
帮助的人:191万
展开全部
拼死写完了~~~~~~~初级应用T_T.大家写好快~~~~~~~~

import java.io.InputStream;
import java.util.Scanner;

public class NumberString {

public void run(String s){
if(s.length()>16){
System.out.println("太长了!");
System.exit(0);
}

char ss[] = new char[s.length()];
ss = s.toCharArray();
for(int i = 0 ;i<ss.length;i++){
if(s.charAt(i) >= 48 && s.charAt(i) <= 57){
System.out.print(s.charAt(i));
if(!(s.charAt(i+1) >= 48 && s.charAt(i+1) <= 57)){
for(int j=0;j<i;j++){
System.out.print(s.charAt(i+1));
}
}
}else{
System.out.print(s.charAt(i));
}
}
}

public static void main(String[] args) {
System.out.println("请输入一个字符和数字");
Scanner reader=new Scanner(System.in);
String s = reader.next();
NumberString ns = new NumberString();
ns.run(s);

}

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式