在Java中,如何替换字符串中的某些字符?
我有一个程序,可以读取输入(字符串)并反向打印该字符串。现在,我需要通读反向字符串,将所有的“A”替换为“T”,将“T”替换为“A”,将“G”替换为“C”,将“C”替换为“G”。所以基本上,“补语”。我尝试使用多行替换函数,但一旦“a”变为“T”,它就会将所有行替换为“a”,因此根本没有“T”。如何替换字符,使它们不会相互覆盖 这是我的代码,如果有帮助的话!我还没有任何函数来获取“补码”,但这里是我正在使用的在Java中,如何替换字符串中的某些字符?,java,string,replace,Java,String,Replace,我有一个程序,可以读取输入(字符串)并反向打印该字符串。现在,我需要通读反向字符串,将所有的“A”替换为“T”,将“T”替换为“A”,将“G”替换为“C”,将“C”替换为“G”。所以基本上,“补语”。我尝试使用多行替换函数,但一旦“a”变为“T”,它就会将所有行替换为“a”,因此根本没有“T”。如何替换字符,使它们不会相互覆盖 这是我的代码,如果有帮助的话!我还没有任何函数来获取“补码”,但这里是我正在使用的 import java.util.*; public class DNA {
import java.util.*;
public class DNA {
public static void main(String[] args)
{
System.out.println("Please input a DNA sequence: ");
Scanner read;
read = new Scanner(System.in);
String input = read.next();
String reverse="";
for(int i = input.length() - 1; i >= 0; i--) {
reverse = reverse + input.charAt(i);
}
System.out.println("Here is the reversed sequence: ");
System.out.println(reverse);
}
}
使用replace方法,但将值更改为“临时”字符
- 替换T->x
- 替换A->T
- 替换x->A
对所有对重复此操作。您可以将反向字符串转换为如下字符数组:
char[] charArr = reverse.toCharArray();
String str = new String(charArr);
然后,您可以对其进行迭代并更改所需的字符:
for(int i = 0; i < charArr.length; i++){
if(charArr[i] == 'A'){
charArr[i] = 't';
}
}
以下是您可以尝试的代码示例:
import java.util.Scanner;
class DNA {
public static void main(String[] args)
{
System.out.println("Please input a DNA sequence: ");
Scanner read = new Scanner(System.in);
String input = read.next();
String reverse="";
StringBuilder sb = new StringBuilder();
for(int i = input.length() - 1; i >= 0; i--) {
reverse = reverse + input.charAt(i);
}
for (char c: input.toCharArray()) { // user 'reverse' to operate on reversed string
switch (c) {
case 'A' : sb.append('T'); break;
case 'T' : sb.append('A'); break;
case 'G' : sb.append('C'); break;
case 'C' : sb.append('G'); break;
default : sb.append(""); break; // handle you're exceptions here
}
}
System.out.println("x: " + sb);
System.out.println("Here is the reversed sequence: ");
System.out.println(reverse);
read.close();
}}
嗯,开关大小写
是一种映射技术,它将把你的大小写
(作为键)映射到它的值。在这种情况下:
我将“A”替换为“T”,其中字符串包含“A”,方法是将其追加到StringBuilder
(以创建新字符串),然后break代码>这是仅用于一次性执行的强制语句。
默认关键字用于default case
,这意味着如果所有案例都不满足执行要求,则调用default
案例,如果没有案例、条件匹配,则默认情况下可以执行任何您想做的事。
好的,对于你的最后一个问题,如果问题陈述了某种模式,你可以把它变成一般性的;如果不是,很遗憾,您必须手动执行。快乐编码一种方法是使用一个临时字母,例如:用X替换a,用a替换T,然后用T替换X。对于另一对,情况类似。@Logan您可以对字符串进行迭代,并对每个字符使用开关大小写。上一个关于完全相同主题的问题已经发布,非常好。@Amesshel我希望我能早点找到它!非常感谢,请不要要求用户脱衣服,这会降低网站的基调。谢谢,这是聪明的转换成小写,这样它就不会被覆盖。然后我就可以在resultWow上使用.toUppercase(),这太简单了,我简直不敢相信我没有想到要这么做。我需要习惯在我的代码中使用更多的逻辑,我倾向于过度考虑所有事情!我不熟悉开关的情况,默认行具体做什么?除了T G C之外,它还包括其他字符吗?我的答案和注释太长,超过了注释框中的字符长度,我正在更新答案。请选择我的答案作为正确答案,并给我投票以激励@洛冈