- Home /
Removing two letter words from a list
Hello,
I have a large list of strings that are different lengths. I am trying to remove strings that are two letters or less. Does anyone know how I can achieve this?
Any help is greatly appreciated, thanks.
Answer by Cherno · Dec 17, 2015 at 06:58 PM
Just use String.Length :)
Iterate through the list backwards so you can remove elements.
for(int i = myList.Count - 1; i > 0; i--) {
if(myList[i].Length <= 2) {
myList.RemoveAt(i);
}
}
Answer by maccabbe · Dec 17, 2015 at 07:25 PM
You can also use Linq.
using UnityEngine;
using System.Collections.Generic;
using System.Linq;
public class UserController : MonoBehaviour
{
void Start()
{
List<string> words = new List<string>() {
"I", "would", "not", "like", "them", "here", "or", "there",
"I", "would", "not", "like", "them", "anywhere"};
List<string> filteredWords = words.Where(x => x.Length > 2).ToList();
foreach(var filteredWord in filteredWords)
{
Debug.Log(filteredWord);
}
}
}
Linq will filter slower than Cherno's answer. However, since it is easier to understand, write, and maintain, I prefer Linq for these types of operations.
I can't really say if still on but Linq was problematic on iOS. I can't confirm as I never use Linq but it was frequently reported as such. $$anonymous$$aybe latest versions of Unity have fixed the problem.
Answer by 12boulla · Dec 17, 2015 at 07:55 PM
Both methods work, but it turned out there was a simpler way, for me at least. Because I am getting my strings from a text file, I just looped through every string in the file, and if its length was two or less, i didn't add it to the list, all the others i added:
foreach(string i in Nanagrams.text.Split('\n'))
{
if(i.Length > 2)
normalAnagrams.Add(i);
}
Your answer
Follow this Question
Related Questions
A node in a childnode? 1 Answer
Can I create a list with an int/float and a string? C# 2 Answers
Removing Inputs from the Input list 1 Answer
can add to a list but not remove 1 Answer
Help removing a Custom Class from a List in UnityScript 1 Answer