java字符串替换题?
给定一个字符串“aaa果4金5a”要求,如果出现把数字后面的字符替换成数字的个数个。比如这个字符串要求被替换成“aaa果金金金金aaaaa”要求,中文字符不能英文都能替换...
给定一个字符串“aaa果4金5a”
要求,如果出现把数字后面的字符替换成数字的个数个。
比如这个字符串要求被替换成“aaa果金金金金aaaaa”
要求,中文字符不能英文都能替换。要求方法简单可行。谁的方法最简单最好分就给谁。
如果觉得问题太难,就该成不考虑中文的情况,假定全为英文和数字. 展开
要求,如果出现把数字后面的字符替换成数字的个数个。
比如这个字符串要求被替换成“aaa果金金金金aaaaa”
要求,中文字符不能英文都能替换。要求方法简单可行。谁的方法最简单最好分就给谁。
如果觉得问题太难,就该成不考虑中文的情况,假定全为英文和数字. 展开
9个回答
展开全部
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());
}
}
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());
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
替换字符串中的子字符串的代码如下:
/** * * 把字符串中的每个空格替换成%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()); }}
/** * * 把字符串中的每个空格替换成%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()); }}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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; //组合完毕,搞定
?>
<?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; //组合完毕,搞定
?>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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());
}
}
我写得很快啊,怎么就冒出来两个回答的了呢,:(
/**
* 这里假设数字都是一位数
* @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());
}
}
我写得很快啊,怎么就冒出来两个回答的了呢,:(
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
拼死写完了~~~~~~~初级应用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);
}
}
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);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询