Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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_Lines - Fatal编程技术网

在Java中删除字符串中的重复行

在Java中删除字符串中的重复行,java,string,lines,Java,String,Lines,我的字符串是: "EEE EEE AAA BBB CCC BBB DDD CCC" 但是我需要在没有相同行的情况下使用这个字符串。 像这样: "EEE AAA BBB CCC DDD" 我该怎么做呢?考虑到您的字符串存储在字符串s中,那么 String[] tokens = s.split("\n"); StringBuilder resultBuilder = new StringBuilder(); Set<String> alreadyPresent = new HashS

我的字符串是:

"EEE
EEE
AAA
BBB
CCC
BBB
DDD
CCC"
但是我需要在没有相同行的情况下使用这个字符串。 像这样:

"EEE
AAA
BBB
CCC
DDD"

我该怎么做呢?

考虑到您的字符串存储在
字符串s
中,那么

String[] tokens = s.split("\n");
StringBuilder resultBuilder = new StringBuilder();
Set<String> alreadyPresent = new HashSet<String>();

boolean first = true;
for(String token : tokens) {

    if(!alreadyPresent.contains(token)) {
        if(first) first = false;
        else resultBuilder.append("\n");

        if(!alreadyPresent.contains(token))
            resultBuilder.append(token);
    }

    alreadyPresent.add(token);
}
String result = resultBuilder.toString();
String[]tokens=s.split(“\n”);
StringBuilder resultBuilder=新建StringBuilder();
Set-alreadyPresent=new HashSet();
布尔值优先=真;
for(字符串标记:标记){
如果(!alreadyPresent.contains(令牌)){
if(first)first=false;
else resultBuilder.append(“\n”);
如果(!alreadyPresent.contains(令牌))
resultBuilder.append(令牌);
}
添加(令牌);
}
字符串结果=resultBuilder.toString();
或:

Set tokens=newhashset(Arrays.asList(s.split(“\n”));
StringBuilder resultBuilder=新建StringBuilder();
布尔值优先=真;
for(字符串标记:标记){
if(first)first=false;
else resultBuilder.append(“\n”)
resultBuilder.append(令牌);
}
字符串结果=resultBuilder.toString();
这里有一个简单的答案

StringBuilder builder = new StringBuilder(); 
for (String line: new LinkedHashSet<String>(Arrays.asList(inputString.split("\n"))) ) {
    builder.append(line);
}
String result = builder.toString();
StringBuilder=新建StringBuilder();
对于(字符串行:新LinkedHashSet(Arrays.asList(inputString.split(“\n”))){
builder.append(行);
}
字符串结果=builder.toString();

合适的方法是使用集合。这将允许您筛选字符串集合并排除重复的值。例如:

import java.util.*;

class Sorter
{
    public static void main(String[] args)
    {
        // The input string, this example uses groups of comma separated values
        String input = "EEE,EEE,AAA,BBB,CCC,BBB,DDD,CCC";

        // Create a new set, this will be used for filtering
        Set<String> set = new HashSet<String>();

        // Add each string within input, add to set.
        // Repeated values will be
        for (String s: input.split(","))set.add(s);

        // Format results
        for (String s: set) System.out.println(s);
    }
}
import java.util.*;
分类机
{
公共静态void main(字符串[]args)
{
//输入字符串,本例使用逗号分隔的值组
字符串输入=“EEE、EEE、AAA、BBB、CCC、BBB、DDD、CCC”;
//创建一个新集合,该集合将用于筛选
Set=newhashset();
//添加输入中的每个字符串,添加到集合。
//重复的值将被删除
对于(字符串s:input.split(“,”)set.add(s);
//格式结果
对于(字符串s:set)System.out.println(s);
}
}

像StringBuffer一样使用Scanner,并使用LinkedHashset搜索重复行

    String text = "Eds\r\nIsa\r\nEds\nIsa\r\nEds\nIsa";
    StringBuilder textResult = new StringBuilder();
    Set list = new LinkedHashSet<String>();
    Scanner scanner = new Scanner(text);
    while (scanner.hasNextLine()) {
        String line = scanner.nextLine();
        if(!list.contains(line)){
            list.add(line);
            textResult.append(line).append(System.getProperty("line.separator"));
        }
    }
    scanner.close();
    System.out.println(textResult);
String text=“Eds\r\nIsa\r\nEds\nIsa\r\nEds\nIsa”;
StringBuilder textResult=新建StringBuilder();
Set list=new LinkedHashSet();
扫描仪=新扫描仪(文本);
while(scanner.hasNextLine()){
字符串行=scanner.nextLine();
如果(!list.contains(行)){
列表。添加(行);
textResult.append(line.append(System.getProperty(“line.separator”));
}
}
scanner.close();
System.out.println(textResult);

但我需要这个代码。字符串和新字符串形式。很抱歉,我最初误解了问题,请尝试按新行字符拆分它们,并将它们填充到
集合中,然后通过添加新行字符重新构造字符串。很抱歉,我尝试了,结果没有改变任何内容。我的字符串是:“azukikiyo MdeNulo SrtaJandra PrepperNewsFeed@antracita1 REECE\u帅气的mvibb F3枪套F3枪套BragiiansJoels J_uC_uRodriguez BragiiansJoels BragiiansJoels”,同样,你实际上没有使用换行符,
“\n”
?那么关于使用
而不是
”\n“
    String text = "Eds\r\nIsa\r\nEds\nIsa\r\nEds\nIsa";
    StringBuilder textResult = new StringBuilder();
    Set list = new LinkedHashSet<String>();
    Scanner scanner = new Scanner(text);
    while (scanner.hasNextLine()) {
        String line = scanner.nextLine();
        if(!list.contains(line)){
            list.add(line);
            textResult.append(line).append(System.getProperty("line.separator"));
        }
    }
    scanner.close();
    System.out.println(textResult);