想删除除单词中的第一个字符以外的所有字符

时间:2016-07-08 04:28:19

标签: c# .net

我是c#的新手,我需要修剪一个有很多单词的句子。我只需要所有单词中的第一个字符。例如

如果句子是这样的话。

输入:Bharat Electrical Limited =>输出:BEL 我如何在c#中实现这一目标?

提前致谢

8 个答案:

答案 0 :(得分:3)

尝试

string sentence = "Bharat Electrical Limited";
var result = sentence.Split(' ').Aggregate("", (current, word) => current + word.Substring(0, 1));

编辑:这是一个简短的解释:

sentence.Split(' ')将字符串拆分为基于空格('')

的元素

.Aggregate("", (current, word) => current + word.Substring(0, 1));是一个linq表达式,用于迭代上面检索的每个单词,并对其执行操作

word.Substring(0, 1)返回每个单词的第一个字母

答案 1 :(得分:2)

这是使用正则表达式轻松完成的事情:

s = Regex.Replace(s, @"(\S)\S*\s*", "$1");

这有效地匹配连续的非空格字符,然后是空格,并用第一个字符替换整个序列。

答案 2 :(得分:1)

首先要将Split字符串转换成单词,然后从每个单词中取出第一个字母。您可以通过简单的for循环执行此操作,如下所示:

string inputStr = "Bharat Electrical Limited";
List<char> firstChars = new List<char>();
foreach (string word in inputStr.Split(new char[]{' '},StringSplitOptions.RemoveEmptyEntries))
{
    firstChars.Add(word[0]); // Collecting first chars of each word
}
string outputStr = String.Join("", firstChars);

这将是这方面的简短方法:

string inputStr = "Bharat Electrical Limited";
string shortWord = String.Join("", inputStr.Split(new char[]{' '},StringSplitOptions.RemoveEmptyEntries).Select(x => x[0]));

如果每个字符串中的第一个字符不是Caps,那么您可以使用以下任何选项。

  1. 在执行操作之前,输入Title cased句子。
  2. 为此,您可以使用以下代码:

    inputStr = System.Threading.Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(inputStr.ToLower());
    
    1. 在我们从单词
    2. 收集字符时将字符转换为大写

      这可以通过以下方式实现:

      firstChars.Add(char.ToUpper(word[0])); // For the first case
      .Select(x => char.ToUpper(x[0])) // For the second case
      

      Here您可以找到上述所有案例的工作示例

答案 3 :(得分:1)

你可以这样做 -

string sentence = "Bharat Electrical Limited";

//Split the words
var letters = sentence.Split(new char[] {' '}, StringSplitOptions.RemoveEmptyEntries);

//Take firsst letter of every word
var myAbbWord = letters.Aggregate(string.Empty, (current, letter) => current + letter.First());

myAbbWord应该为您显示 BEL

答案 4 :(得分:1)

这是解决方案。

我希望它有所帮助。

string str1 = "Bharat Electrical Limited";
var resultList = str1.Split(' ');
string result = resultList.Aggregate(String.Empty, (current, word) => current + word.First());

答案 5 :(得分:0)

最简单的方法是:

string inputStr = "Bharat Electrical Limited";

string result = new String(inputStr.Split(' ').Select(word => (word[0])).ToArray());
// BEL

您需要将using System.Linq;添加到源文件中。

逻辑是:

将字符串拆分为数组或单词(由空格分隔),然后通过选择每个字符串的第一个字符串项目此数组。结果是第一个字符的数组。然后使用 String重载构造函数获取char数组,构造结果字符串。

答案 6 :(得分:0)

这对您来说可能看起来更友好

string intput = "Bharat Electrical Limited";
string output = string.Join( "",intput.Split(new string[] {" "}, StringSplitOptions.RemoveEmptyEntries)
               .Select(a => a.First()));

首先用空格分割输入的句子,然后在First()上使用string扩展名来获取字符串的第一个字符

答案 7 :(得分:0)

使用此方法

  string inputStr = "Bharat Electrical Limited";
  var arrayString = string.Join("", inputStr.Split(' ').Select(x => x[0]));