在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);