comment".Prendre()` sur une chaîne et obtenir une chaîne de caractères à la fin?
LINQ to Objects prend en charge les requêtes sur les objets string, mais lorsque j'utilise le code comme ci-dessous:
string SomeText = "this is some text in a string";
return SomeText.Take(6).ToString();
Tout ce que j'obtiens est:
System.Linq.Enumerable+<TakeIterator>d__3a`1[System.Char]
Cette question est abordée comme un "accident" dans cette question mais c'est ce que je suis en train d'essayer de le faire et je ne le trouve pas grâce à la recherche de n'importe où.
Je sais qu'il y a d'autres manières de manipuler les chaînes de caractères, mais ensuite je sais aussi que vous pouvez faire vraiment des trucs cool avec LINQ et j'aimerais juste savoir si il y a une façon de couper une chaîne de caractères à partir d'une certaine longueur avec LINQ?
Vous devez vous connecter pour publier un commentaire.
Il n'y a pas de méthode intégrée dans le Système.Linq pour ce faire, mais vous pouvez écrire votre propre méthode d'extension assez facilement:
Malheureusement, parce que
object.ToString
existe sur tous les .NET des objets, vous auriez à donner à la méthode un nom différent, de sorte que le compilateur appelle votre méthode d'extension, leToString
.Que par votre commentaire ci-dessous, il est bon de la question de savoir si cette approche est la bonne. Parce que
String
expose beaucoup de fonctionnalités grâce à ses méthodes publiques, je voudrais mettre en œuvre cette méthode comme une extension surString
lui-même:Que vous pouvez l'utiliser comme suit:
Cela a l'avantage de ne pas créer les tableaux/objets lorsque la chaîne est déjà plus courte que la longueur désirée.
.Append()
ing beaucoup de données pour générer un fichier. Je sais que je ne devrais pas prématurément optimiser mais est à l'aide de LINQ dans la façon dont vous le suggérez perdre beaucoup de cpu/mémoire quand il y a un moyen plus simple de faire cela? Disons-le simplement: souhaitez-vous utiliser ce code pour découper une chaîne de caractères à partir d'une certaine longueur dans votre propre projet?Il suffit de créer de la chaîne
Également prêter attention à la chaîne des méthodes indigènes
SomeText
est inférieure à six caractères; je suppose que l'OP voulait une méthode qui se comportaient comme desTake
(c'est à dire, les retours au plus que le nombre de caractères, mais de moins en moins (sans exception) si la chaîne d'entrée est plus court).J'ai exécuté ce moi-même à quelques reprises et utiliser les éléments suivants:
SomeText.Take(6)
retourne un(IEnumerable
de char de char, etToString
méthode ne sera pas de retour la suspicion d'une chaîne que vous avez besoin de l'appeler comme les suivantes: