C#从字符串中获取字符后的字符

时间:2014-02-05 17:53:55

标签: c# string char

string dex = "ab43kjh43434v34b";

如何从上面的字符串中将每个第二个字符转换为另一个字符串? 例如:

string dex1 = "b3j4443b";

4 个答案:

答案 0 :(得分:2)

string dex = "ab43kjh43434v34b";
var dex1 = String.Join("", dex.Where((c,i) => i % 2 == 1));

答案 1 :(得分:1)

StringBuilder result = new StringBuilder();

for (int i = 0; i <= dex.Length; i++)
{
    if (i % 2 != 0) continue;
    result.Append(dex[i]);
}

答案 2 :(得分:1)

正则表达式也有效:

string EveryOtherCharacter( string s , int modulo2 )
{
  string value = Regex.Replace( s , "." , m => m.Index & 1 == 1 ? m.Value : "" )) ;
  return value ;
}

虽然我认为,你会发现避免类似LINQ的聪明,坚持简单会产生最大的效率。这是一个简单而明显的通用版本:

string SelectEveryNthCharFromString( string s, int n , int r )
{
  if ( s == null ) throw new ArgumentNullException("s") ;
  if ( n < 1 ) throw new ArgumentOutOfRangeException("n") ;
  if ( r < 0 || r > n-1 ) throw new ArgumentOutOfRangeException("r") ;

  StringBuilder buffer = new StringBuilder( 1 + s.Length / n ) ;

  for ( int i = 0 ; i < s.Length ; ++i )
  {
    if ( i % n != r ) continue ;
    buffer.Append(s[i]) ;
  }

  return buffer.ToString() ;
}

答案 3 :(得分:0)

您可以将字符串视为字符数组,例如dex[0]会在您的示例中为您提供a。那个,(每个)-loop和Length属性应该足以解决你的问题。