Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中,如何替换字符串中的某些字符?_Java_String_Replace - Fatal编程技术网

在Java中,如何替换字符串中的某些字符?

在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 {

我有一个程序,可以读取输入(字符串)并反向打印该字符串。现在,我需要通读反向字符串,将所有的“A”替换为“T”,将“T”替换为“A”,将“G”替换为“C”,将“C”替换为“G”。所以基本上,“补语”。我尝试使用多行替换函数,但一旦“a”变为“T”,它就会将所有行替换为“a”,因此根本没有“T”。如何替换字符,使它们不会相互覆盖

这是我的代码,如果有帮助的话!我还没有任何函数来获取“补码”,但这里是我正在使用的

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之外,它还包括其他字符吗?我的答案和注释太长,超过了注释框中的字符长度,我正在更新答案。请选择我的答案作为正确答案,并给我投票以激励@洛冈