比如 python 中,list1 = ['abc', 'blas', 'dsl'],
要将每个元素的第一个字符变成大写 list2 = ['Abc', 'Blas', 'Dsl'],
只需要如下操作即可:
list2 = [x[0].upper() + x[1:] for x in list1]
请问 c#里是否也有类似简洁明了的语法来实现?多谢!
1
hahastudio 2020-02-25 17:09:17 +08:00 1
如果你在用 C# 8.0,那么有 x[1..^0]
不然的话,基本就是 Skip().Take() 了 |
2
xupefei 2020-02-25 17:13:55 +08:00 1
> var list = new []{"aaa","bbb","ccc"};
> var list2 = list.Select(t=>Char.ToUpper(t[0])+t[1..]); Aaa Bbb Ccc |
3
xupefei 2020-02-25 17:17:06 +08:00 1
@xupefei 或者用很像 py 的语法:
var list3 = from t in list select Char.ToUpper(t[0])+t[1..]; |
4
forgottencoast 2020-02-26 10:04:55 +08:00 1
C# 8.0 才能用类似 Python 的切片的写法。
低版本只能用字符串的 Substring 方法来代替了。 类似: from t in list select Char.ToUpper(s[0]) + t.Substring(1); 其实这些自己写一个帮助方法也不费事,并不需要特别简明的语法。 |
5
charlie21 2020-04-11 22:06:45 +08:00
```
using System.Linq; static void Test() { string[] arr = { "abc", "blas", "dsl" }; arr = arr.Select(i => Char.ToUpper(i[0]) + i[1..]).ToArray(); Array.ForEach(arr, Console.WriteLine); } ``` output: Abc Blas Dsl |