-2

可能重复:
删除字符串中特定字符之后的字符,然后删除子字符串?

我有一个字符串变量,其中包含如下文本:

"Hello My name is B and I love soccer. I live in California."

我想在第一个“。”之后剪切文本。所以文本显示

"Hello My name is B and I love soccer."

我怎样才能以最简单的方式做到这一点?

我试过了:

Char Mychar = '.';

Stringvariabel.trimstart(Mychar);

但我想这是错误的。

4

13 回答 13

2
Char Mychar = '.';    
Stringvariabel = Stringvariabel.Split(Mychar).First() + Mychar.toString();
于 2012-10-31T13:43:08.960 回答
1

The simplest way would be to take the substring up until the first occurrence of the character.

public string TrimAtFirstChar(string s, char c)
{
    int index = s.IndexOf(c);
    if(index == -1) //there is no '.' in the string
        return s;
    return s.Substring(0, index)
}

Alternately, to avoid worrying about the case where there is no '.', you could use stringvariable.Split('.')[0].

于 2012-10-31T13:44:58.073 回答
1

If you're only interested in the first sentence, then just grab a substring starting at the beginning and ending at the '.'.

Stringvariabel.Substring(0, Stringvariabel.IndexOf('.') + 1);
于 2012-10-31T13:45:22.560 回答
1

您可以使用string.Split来获得结果:

string input = "Hello My name is B and I love soccer. I live in California. ";
string result = string.Format("{0}.", input.Split('.').First());
于 2012-10-31T13:43:06.580 回答
1

使用IndexOf功能将为您工作..

string input = "Hello My name is B and I love soccer. I live in California. ";
int i = input .IndexOf('.');
string result = s.Substring(0,i+1);
于 2012-10-31T13:43:16.590 回答
1

一种方便的方法是使用string.Split并要求仅第一部分:

var firstPart = input.Split(new[] { '.' }, 1).First();

这是非常有效的,因为它不会在第一个点之后继续处理字符串,但它会删除该点(如果它存在)并且您将无法首先判断是否有一个点。

另一个选项是string.IndexOf条件:

var index = input.IndexOf(".");
if (index != -1) {
    input = input.SubString(0, index);
}
于 2012-10-31T13:43:25.430 回答
1

TrimStart从您给它的列表中的字符串开头删除字符。它只会删除 a.如果它在一开始就出现。

您可以找到第一个.并在该点之前获取一个子字符串:

stringVar.Substring(0, stringVar.IndexOf('.') + 1);
于 2012-10-31T13:44:18.890 回答
1

您可以执行以下操作

stringVariable.Split('.')[0]

或者

stringVariable.SubString(0, stringVariable.IndexOf(".") + 1)

希望这可以帮助!!

于 2012-10-31T13:44:45.190 回答
0

Without split, only using Substring and IndexOf (which is more efficient when the text is very large):

int index = text.IndexOf(".") + 1;
String result = text;
if(index > 0)
    result = text.Substring(0, index);

http://ideone.com/HL6GwN

于 2012-10-31T13:45:59.923 回答
0

看一下String.Split方法。

var myString = "Hello My name is B and I love soccer. I live in California. ";
var firstPart = myString.Split('.')[0];
于 2012-10-31T13:43:25.010 回答
0
var splitLine = yourString.Split('.');
if (splitLine != null && splitLine.Count > 0)
  return splitLine[0];
于 2012-10-31T13:43:28.253 回答
0
variablename.Substring(0, variablename.IndexOf('.') + 1);
于 2012-10-31T13:44:16.537 回答
0

请注意 String.Split() 可能会产生影响,因为您创建了一个数组,其中包含由给定分隔符分隔的所有子字符串,但您只对第一次出现感兴趣。所以使用 IndexOf() 和 Substring() 更有意义。

string input = "Hello My name is B and I love soccer. I live in California. ";
var index = input.IndexOf(".");

var result = index > 0
              ? input.Substring(0, index)
              : input;
于 2012-10-31T13:48:08.633 回答