我得到这样的字符串:
foreach (DataRow dt in dt_power_conv.Rows) {
_powerConv.leit_conv.Add(dt["leit_"].ToString();
}
首次加入" ABB"。我需要得到" ABB"其余部分应该删除。我尝试过以下内容,但它没有改变任何内容:
foreach (DataRow dt in dt_power_conv.Rows) {
_powerConv.leit_conv.Add(dt["leit_"].ToString().Substring(0,(dt["leit_"].ToString()).LastIndexOf(" ") + 1));
}
答案 0 :(得分:4)
String.IndexOf
和Remove
的一种方式:
foreach (DataRow row in dt_power_conv.Rows) {
string leit = row.Field<string>("leit_");
int spaceIndex = leit.IndexOf(' ');
leit = spaceIndex == -1 ? leit : leit.Remove(spaceIndex);
_powerConv.leit_conv.Add(leit);
}
如果字符串不长,您还可以使用Split
和Enumerable.First
,这样更容易阅读:
foreach (DataRow row in dt_power_conv.Rows) {
string leit = row.Field<string>("leit_");
leit = leit.Split().First();
_powerConv.leit_conv.Add(leit);
}
请注意,不带参数的String.Split
也会按制表符或换行符进行拆分。
答案 1 :(得分:3)
据我所知,你想在第一个空间之前从字符串中获取所有内容?你的问题不是很清楚。但如果是这样,我会建议:
string str = "ABB for the first time";
string str2 = str.Split(' ').First();
答案 2 :(得分:1)
var text = "ABB for the first time";
var abb = text.Split(' ').First();
可能不是最有效但易读的。
答案 3 :(得分:1)
尝试将Remove()
与IndexOf()
:
foreach (DataRow dt in dt_power_conv.Rows) {
string valueToAdd = dt["leit_"].ToString();
int firstSpacePosition = valueToAdd.IndexOf(" ");
if (firstSpacePosition >= 0)
valueToAdd = valueToAdd.Remove(firstSpacePosition);
_powerConv.leit_conv.Add(valueToAdd);
}
编辑不重复IndexOf()函数。
答案 4 :(得分:0)
我不知道您选择使用LastIndexOf
的原因,因为它说明它会为您提供最后一个索引。您只需稍作更改即可使代码正常工作。使用IndexOf方法。它:
报告此实例中第一次出现指定字符串的从零开始的索引。
如果您不希望将空格包含在字符串中,请删除+1
_powerConv.leit_conv.Add(
dt["leit_"].ToString().Substring(0,(dt["leit_"].ToString()).IndexOf(" ")));
答案 5 :(得分:-1)
以下是您需要的示例:
using System;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
string text = "Hellou1 Hellou2";
int index = text.LastIndexOf(' ');
text = text.Substring(0, index);
Console.WriteLine(text);
}
}
}