有一个list<string> 里面的元素如下PD32\tR3007.1\tP605 PD32\tR3008.1\tU733 PD32\tR3008.1\tU733 现在要提取出每个string两个\t中间的子串,并把list按照这个子串分类
时间: 2023-12-14 07:03:48 浏览: 31
你可以使用Split方法来分割每个字符串,然后使用LINQ的GroupBy方法对子串进行分组。具体代码如下:
```
List<string> list = new List<string> { "PD32\tR3007.1\tP605", "PD32\tR3008.1\tU733", "PD32\tR3008.1\tU733" };
var groups = list.Select(s => s.Split('\t')[1]).Distinct().Select(g => new { Key = g, Values = list.Where(s => s.Split('\t')[1] == g) });
foreach (var group in groups)
{
Console.WriteLine("Group {0}:", group.Key);
foreach (var value in group.Values)
{
Console.WriteLine("\t{0}", value);
}
}
```
这段代码会输出每个子串对应的字符串列表。
相关问题
java List<String>str1,List<String>str2.求相同的数据
以下是Java中求两个List<String>中相同数据的方法:
```java
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class Main {
public static void main(String[] args) {
List<String> str1 = new ArrayList<>();
str1.add("1");
str1.add("2");
str1.add("3");
List<String> str2 = new ArrayList<>();
str2.add("2");
str2.add("3");
str2.add("4");
Set<String> commonElements = new HashSet<>(str1);
commonElements.retainAll(str2);
System.out.println("相同的数据为:" + commonElements);
}
}
```
这段代码中,我们首先创建了两个List<String>对象str1和str2,并分别添加了一些元素。然后,我们使用HashSet将str1中的元素存储起来,这样可以去除重复的元素。接下来,我们使用retainAll()方法来获取str1和str2中相同的元素,将结果存储在commonElements集合中。最后,我们打印出commonElements集合中的元素,即为两个List中相同的数据。
Map<String, List<String>> 转成 List<String>
要将Map<String, List<String>>转换为List<String>,可以使用以下步骤:
1. 首先,声明一个空的List<String>来存储结果。
2. 然后,使用Map的values()方法来获取Map中的所有值,返回一个Collection<List<String>>。
3. 接着,使用forEach循环遍历Collection<List<String>>中的每一个List<String>。
4. 在循环内部,使用addAll方法将每一个List<String>中的元素添加到之前声明的空List<String>中。
5. 最后,返回这个包含所有元素的List<String>。
这样就成功将Map<String, List<String>>转换为List<String>了。<span class="em">1</span><span class="em">2</span><span class="em">3</span>