当前位置: 首页 > 知识库问答 >
问题:

我如何删除最后一个"

梁马鲁
2023-03-14

我有一个主类,该类将输出打印到控制台。。。

例如,如果行中包含A和B,我需要打印“Apple”

我将在主方法中通过首先实例化该类的对象来实现这一点,即。

VeggiesAndFruits myVeg1 = new VeggiesAndFruits(AB);
VeggiesAndFruits myVeg2 = new VeggiesAndFruits(A);
System.out.println(myVeg1.getDescription());
System.out.println(myVeg2.getDescription());

代码示例:

public class VeggiesAndFruits
{
String line;

public VeggiesAndFruits(String line)
{
this.line = line;
}

public String getDescription()
    {
        String description = "";

        if(line.contains("A"))
        {
            description += "Apple & ";
        }
        if(line.contains("B"))
        {
            description += "Banana & ";
        }
        if(line.contains("C"))
        {
            description += "Carrot & ";

        return description;
}
}

共有3个答案

翟京
2023-03-14

您可以尝试在字符串上使用int lastIndexOf(int ch)方法。

例如:

int index=description.lastIndexOf('&');

然后可以使用此索引从主字符串中提取一个子字符串,以删除最后一个

String newDescription = description.substring(0, index);

勾长卿
2023-03-14

在Java8中,使用StringJoiner

public String getDescription() {
    StringJoiner description = new StringJoiner(" & ");
    if (line.contains("A"))
        description.add("Apple");
    if (line.contains("B"))
        description.add("Banana");
    if (line.contains("C"))
        description.add("Carrot");
    return description.toString();
}

在Java 5中,使用StringBuilderif语句:

public String getDescription() {
    StringBuilder description = new StringBuilder();
    if (line.contains("A")) {
        description.append("Apple");
    }
    if (line.contains("B")) {
        if (description.length() != 0)
            description.append(" & ");
        description.append("Banana");
    }
    if (line.contains("C")) {
        if (description.length() != 0)
            description.append(" & ");
        description.append("Carrot");
    }
    return description.toString();
}

或者,正如kaya3所指出的:

public String getDescription() {
    StringBuilder description = new StringBuilder();
    String sep = "";
    if (line.contains("A")) {
        description.append(sep).append("Apple");
        sep = " & ";
    }
    if (line.contains("B")) {
        description.append(sep).append("Banana");
        sep = " & ";
    }
    if (line.contains("C")) {
        description.append(sep).append("Carrot");
        sep = " & ";
    }
    return description.toString();
}

或者问题代码试图做到这一点的方式:

public String getDescription() {
    StringBuilder description = new StringBuilder();
    if (line.contains("A"))
        description.append("Apple & ");
    if (line.contains("B"))
        description.append("Banana & ");
    if (line.contains("C"))
        description.append("Carrot & ");
    if (description.length() != 0)
        description.setLength(description.length() - 3); // remove final " & "
    return description.toString();
}

测验

System.out.println(new VeggiesAndFruits("").getDescription());
System.out.println(new VeggiesAndFruits("A").getDescription());
System.out.println(new VeggiesAndFruits("B").getDescription());
System.out.println(new VeggiesAndFruits("C").getDescription());
System.out.println(new VeggiesAndFruits("AB").getDescription());
System.out.println(new VeggiesAndFruits("AC").getDescription());
System.out.println(new VeggiesAndFruits("BC").getDescription());
System.out.println(new VeggiesAndFruits("CBA").getDescription());

输出(以上所有4种解决方案相同)


Apple
Banana
Carrot
Apple & Banana
Apple & Carrot
Banana & Carrot
Apple & Banana & Carrot
易英奕
2023-03-14

如果使用Java8,我建议在这里使用StringJoiner。正如Javadoc所说,StringJoiner用于构造由分隔符分隔的字符序列。喜欢

public String getDescription() {
    StringJoiner sj = new StringJoiner(" & ");

    if (line.contains("A")) {
        sj.add("Apple");
    }
    if (line.contains("B")) {
        sj.add("Banana");
    }
    if (line.contains("C")) {
        sj.add("Carrot");
    }
    return sj.toString();
}

在早期版本的Java(5)中,可以使用StringBuilder(以及kaya3提到的“胶水”)。

public String getDescription() {
    StringBuilder sb = new StringBuilder();
    String glue = "";
    if (line.contains("A")) {
        sb.append("Apple");
        glue = " & ";
    }
    if (line.contains("B")) {
        sb.append(glue);
        sb.append("Banana");
        glue = " & ";
    }
    if (line.contains("C")) {
        sb.append(glue);
        sb.append("Carrot");
    }
    return sb.toString();
}

在Java5之前,您可以使用StringBuffer

public String getDescription() {
    StringBuffer sb = new StringBuffer();
    String glue = "";
    if (line.contains("A")) {
        sb.append("Apple");
        glue = " & ";
    }
    if (line.contains("B")) {
        sb.append(glue);
        sb.append("Banana");
        glue = " & ";
    }
    if (line.contains("C")) {
        sb.append(glue);
        sb.append("Carrot");
    }
    return sb.toString();
}
 类似资料:
  • 我一直在使用pandas导入CSV,但每次尝试使用它时,我都会得到一个随机的额外行,这会导致代码中的错误。我如何完全抹去这一行? 我用来导入它的代码是:import itertools import copy import networkx as nx import pandas as pd import Matplotlib.pyplot as plt import csv 我的表是一个简单的I

  • 我正在努力解决hackerrank的一个特殊问题。 为了解决这个问题,我使用hashmap创建了一个字典,我想用这个人的名字搜索电话号码。如果有一个条目与该名称,打印与名称的号码,否则打印未找到。 我得到了所需的输出,但有一个额外的空行。例如,当我搜索名称'J'和'K'时,字典中只有J,我的输出是:

  • 我是新来的希望你们能帮我。。。 我是java编程的初学者,我想我对这个问题有点不知所措。 我的程序运行得很好,除了一个让我恼火的小细节。我有一个JTable,第一列有一个按钮,可以从表中删除这一行。它工作得很好,除了当我试图删除表的最后一行时,按钮停留在那里,然后表冻结,我无法删除任何行,因为我收到了一个“越界异常”。但是,当我使用命令表时。getRowCount()); 在删除该行之前和之后,表

  • 我将在main方法中这样做,首先实例化该类的一个对象,即。 代码示例:

  • 我在试着做个背景效果。在按键时,它创建一个div并在半秒后淡出。每次按下一个键,它都会创建一个具有新ID的新div。我如何在每个div被触发后半秒内删除它? 我忘记提了,我有一个函数可以将缩短为。我没有使用jQuery。 这是我目前为止的代码。

  • 问题内容: 对于此函数,运行后,输出将为2,5,7 .... 9,我的问题是如何删除最后一个逗号? 问题答案: 我会在一开始打印逗号,像这样-