Java 替换不带字符串的字符Replace()方法
编写一个名为Java 替换不带字符串的字符Replace()方法,java,string,Java,String,编写一个名为game的方法,它接受一个普通单词(参数数据类型:String)并将其转换为B游戏的单词。B-Game的工作原理是在单词的每个元音(a,e,i,o,u)上加上aB 例如: 传递的字符串:与我一起玩 返回的字符串:plabay-wibith-mebe 我的代码: public static void main(String[] args) { String s="play with me"; char[] chars = s.toCharArray(
game
的方法,它接受一个普通单词(参数数据类型:String
)并将其转换为B游戏的单词。B-Game的工作原理是在单词的每个元音(a,e,i,o,u)上加上aB
例如:
- 传递的字符串:
与我一起玩
- 返回的字符串:
plabay-wibith-mebe
public static void main(String[] args) {
String s="play with me";
char[] chars = s.toCharArray();
ArrayList<Integer> list = new ArrayList<Integer>();
for(int i=0;i<chars.length;i++) {
if(chars[i]=='i' || chars[i]=='e' || chars[i]=='a' || chars[i]=='u' || chars[i]=='o' ) {
list.add(i); // add position to list
}
}
int size=chars.length+(list.size()*2);
char [] charsNew= new char[size];
for(int i=0;i<charsNew.length;i++) {
for(int f=0;f<chars.length;f++) {
charsNew[i]=chars[f];
System.out.println(java.util.Arrays.toString(charsNew));
}
}
}
publicstaticvoidmain(字符串[]args){
String s=“与我一起玩”;
char[]chars=s.toCharArray();
ArrayList=新建ArrayList();
对于(int i=0;i我会将字符串的字符流化,并用b
s围绕每个元音:
Set<String> vowels = new HashSet<>(Arrays.asList("a", "e", "i", "o", "u"));
String s = "play with me";
String result =
s.chars()
.mapToObj(c -> String.valueOf((char) c))
.map(c -> vowels.contains(c) ? c + "b" + c : c)
.collect(Collectors.joining());
Set元音=新的HashSet(Arrays.asList(“a”、“e”、“i”、“o”、“u”));
String s=“与我一起玩”;
字符串结果=
s、 chars()
.mapToObj(c->String.valueOf((char)c))
.map(c->元音。包含(c)?c+“b”+c:c)
.collect(收集器.joining());
显然,在(基本上)计算元音时,您不需要创建列表。只需使用整数对元音进行计数(这将得到与创建列表和计算其大小相同的结果),但更容易理解,并且使用的资源更少。
接下来,分配内存来构建新字符串,如示例代码所示
然后填充新字符串。这只需要一个循环。我不明白你对内部循环的想法
您需要记住新字符串的索引,这不是循环计数器,因为如果遇到元音,它有时会增加3而不是1。循环会在未修改的输入字符串上迭代。
复制下一个字符并将索引增加到下一个字符串中1。
如果字符是元音,则在新字符串中添加一个“b”和元音,并将新字符串的索引增加2
你应该能够根据这个建议来编写你的代码。你的代码没有使用replace()
-那么你的问题是什么呢?他的代码工作不正确,产生了相当多的混乱。但是你为什么要使用列表+char[]
构建一个字符串
,而不是像StringBuilder这样更合适的东西
?正如@GhostCat指出的,您不使用。如果您的代码工作不正常,请添加一个(包括测试用例)并重新表述标题,以反映您正在寻找调试代码的帮助StringBuilder@Abdessamad如果不允许使用String
的任何方法,则无法查询char
sString
的组成部分。因此,该问题无法解决遵守这些约束。优雅,但不允许作为Java101赋值:)