iT邦幫忙

1

認識C# 的 IndexOf 與 LastIndexOf

  • 分享至 

  • xImage
  •  

今日之自學筆記

淺談在C#中字串相關的查找方法有IndexOf、LastlndexOf

IndexOf : 指定字串在原字串中第一次出現的位置
LastlndexOf : 指定字串在查找的字串中最後一次出現的位置

如果要判斷字串中是否只含有一個指定的字串,則需要將IndexOf 和LastlndexOf 方法一起使用

【範例1】輸入一個字串,然後判斷字串中是否含有@, 並輸出@ 的位置

(運用IndexOf方法)

void Main()
{
	string str = Console.ReadLine();
	if(str.IndexOf("@")!= -1)//只要指定的字串在查找的字串中不存在 結果都是-1
	{
		Console.WriteLine("@的位置在{0}",str.IndexOf("@") +1 );
        //字串位置電腦從0開始數 所以要+1 ,讓我們從1開始算
	}
	else
	{
		Console.WriteLine("裡面不包含@");//如果裡面沒有此字串就列印出"裡面不包含@"
	}
}

正確結果如下

我輸入一串字串為 ABCD@FG 我們從1開始算 所以應該是在第5個位置
https://ithelp.ithome.com.tw/upload/images/20220325/20135530dVD7olAJHB.jpg

【範例2】輸入一個字符串,判斷該字串中是否僅含有一個@?

(運用IndexOf和LastlndexOf方法)

我們先用IndexOf 方法查找第一個@
判斷他出現的位置和用LastlndexOf 方法查找@ 在字串中最後一次出現的位置是否相同

void Main()
{
            string str = Console.ReadLine();
            int firstIndex = str.IndexOf("@");
            int lastIndex = str.LastIndexOf("@");
            if (firstIndex != -1) //先做第一步判斷是否str內有包含@如果有 進行下一個判斷
            {
                if (firstIndex == lastIndex)//如果只含有一個@
                {
                    Console.WriteLine("在您輸入的字串中只含有一個@");
                }
                else //反之就跳出以下訊息
                {
                    Console.WriteLine("在您輸入的字串中含有多個@");
                }
            }
            else
            {
                Console.WriteLine("在您輸入的字串中並不包含@");
            }
}

結果如下 我輸入了三個@

https://ithelp.ithome.com.tw/upload/images/20220325/20135530j0Pa8uc04J.jpg

PS : IndexOf、LastIndexOf都是返回一個位置,是個整數值;找不到都返回-1;
IndexOf是從左向右查,LastIndexOf是從右向左查,
不管是IndexOf還是LastIndexOf,索引序列都是從左到右的(起始值是0)

簡易介紹一下這兩個用法

更詳細可以參考這篇來源
[C#]String常用技巧整理(IndexOf、LastIndexOf、Substring、Split)

以及官網
String.IndexOf 方法



每日小分享 如何改善拖延症?(我簡直拖延症末期哈哈)
改善拖延症


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言