在空格之后立即删除其余的字符串

时间:2018-03-08 10:39:45

标签: c#

我得到这样的字符串:

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

6 个答案:

答案 0 :(得分:4)

String.IndexOfRemove的一种方式:

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

如果字符串不长,您还可以使用SplitEnumerable.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);

        }
    }
}