Java 用数字替换字符数组中的字符时出现问题
给定一个字符串,我必须用它们在数组中各自的位置替换所有元音。但是,我的代码返回一些奇怪的符号,而不是数字。问题出在哪里Java 用数字替换字符数组中的字符时出现问题,java,char,chararray,Java,Char,Chararray,给定一个字符串,我必须用它们在数组中各自的位置替换所有元音。但是,我的代码返回一些奇怪的符号,而不是数字。问题出在哪里 String s = "this is my string"; char p = 1; char[] formatted = s.toCharArray(); for(int i = 0; i < formatted.length; i++) { if(format
String s = "this is my string";
char p = 1;
char[] formatted = s.toCharArray();
for(int i = 0; i < formatted.length; i++) {
if(formatted[i] == 'a' ||formatted[i] == 'e' ||formatted[i] == 'i'
||formatted[i] == 'o' ||formatted[i] == 'u') {
formatted[i] = p;
}
p++;
}
s = String.valueOf(formatted);
System.out.println(s);
String s=“这是我的字符串”;
charp=1;
char[]格式化=s.toCharArray();
for(int i=0;i
注意:数字大于10字符
'1'
的值与数字1
的值不同
你可以改变
char p = 1;
到
我想这会给你想要的,只要你不想在字符串中插入超过9个数字。否则,您将需要处理插入额外数字的问题,这是无法在字符数组中执行的,因为它具有固定长度。字符
'1'
的值与数字1
的值不同
this is my s t r i n g
012345678910 11 12 13 14
你可以改变
char p = 1;
到
我想这会给你想要的,只要你不想在字符串中插入超过9个数字。否则,您将需要处理插入额外数字的问题,这是无法在字符数组中执行的,因为它具有固定的长度
this is my s t r i n g
012345678910 11 12 13 14
i
在string
中的位置是14
,但14
不是字符;这是一个数字字符串。这意味着您需要处理字符串而不是字符。使用“
作为分隔符拆分s
,处理生成的数组,最后使用”
作为分隔符将数组合并回字符串
class Main {
public static void main(String[] args) {
String s = "this is my string";
String[] formatted = s.split("");
for (int i = 0; i < formatted.length; i++) {
if (formatted[i].matches("(?i)[aeiou]")) {
formatted[i] = String.valueOf(i);
}
}
s = String.join("", formatted);
System.out.println(s);
}
}
正则表达式,(?i)[aeiou]
为其中一个元音指定不区分大小写的匹配,其中(?i)
指定不区分大小写
i
在string
中的位置是14
,但14
不是字符;这是一个数字字符串。这意味着您需要处理字符串而不是字符。使用“
作为分隔符拆分s
,处理生成的数组,最后使用”
作为分隔符将数组合并回字符串
class Main {
public static void main(String[] args) {
String s = "this is my string";
String[] formatted = s.split("");
for (int i = 0; i < formatted.length; i++) {
if (formatted[i].matches("(?i)[aeiou]")) {
formatted[i] = String.valueOf(i);
}
}
s = String.join("", formatted);
System.out.println(s);
}
}
正则表达式,
(?i)[aeiou]
为其中一个元音指定不区分大小写的匹配,其中(?i)
指定不区分大小写 问题的根源已经在评论中
在java中,这些类型在内存大小及其表示形式上会有所不同
int x=1;
和
字符y='1'
不具有相同的值,这是因为许多数字表示与ascii码相关,并且必须将值分配到y才能得到打印的数字1是十六进制0x31或DEC 49
看看ascci表
问题的根源已经在评论中 在java中,这些类型在内存大小及其表示形式上会有所不同 int x=1; 和 字符y='1' 不具有相同的值,这是因为许多数字表示与ascii码相关,并且必须将值分配到y才能得到打印的数字1是十六进制0x31或DEC 49 看看ascci表
字符
'1'
的值与数字1
的值不同。您可以使用charp='1'代码>只要插入的数字数小于10。索引14元音会发生什么情况?/请注意整数和字符ascii值。/您可以将字母循环到StringBuffer,并将字母或循环索引字符串“”+(i+1)
值作为字符串附加。i
在string
中的位置是14
,但14
不是字符;这是一个数字字符串。字符'1'
的值与数字1
的值不同。您可以使用charp='1'代码>只要插入的数字数小于10。索引14元音会发生什么情况?/请注意整数和字符ascii值。/您可以将字母循环到StringBuffer,并将字母或循环索引字符串“”+(i+1)
值作为字符串附加。i
在string
中的位置是14
,但14
不是字符;这是一个数字字符串。它必须覆盖10以上的数字,那么我该怎么做?你可以切换到使用字符数组而不是字符数组。它必须覆盖10以上的数字,那么我该怎么做?你可以切换到使用字符数组而不是字符数组。