簡體   English   中英

在兩個特殊字符之間過濾文本

[英]Filter text between two special characters

例如,我有那些字符串:

"qwe/qwe/qwe/qwe//qwe/somethinghere_blabla.exe"
"qwe/qwe/q//we/qwe//qwe/somethingother_here_blabla.exe"
"qwe/qwe/qwe/qwe//qwe/some_numbers_here_blabla.exe"

現在,我想獲取最后一個“ /”和最后一個“ _”之間的文本。 因此結果將是:

"somethinghere"
"somethingother_here"
"some_numbers_here"

最簡單,最清晰的方法是什么?

我不知道該怎么做,我應該將它們分為“ /”和“ _”,所以分開嗎? 我想不出辦法。

也許從頭開始掃描字符串,直到到達第一個'/'和'_'? 還是有一種更簡便,更快捷的方法? 因為它必須掃描約10.000個字符串。

string[] words = line.Split('/', '_'); //maybe use this? probably not

提前致謝!

string s = "qwe/qwe/q//we/qwe//qwe/somethingother_here_blabla.exe";
int last_ = s.LastIndexOf('_');
if (last_ < 0) // _ not found, take the tail of string
    last_ = s.Length;
int lastSlash = s.LastIndexOf('/');
string part = s.Substring(lastSlash + 1, last_ - lastSlash - 1);

好吧,這里有string.LastIndexOf

var start = line.LastIndexOf('/') + 1;
var end = line.LastIndexOf('_');

var result = line.Substring(start, end - start);

LINQ方式:

var str = "qwe/qwe/qwe/qwe//qwe/somethinghere_blabla.exe";
var newStr = new string(str.Reverse().SkipWhile(c => c != '_').Skip(1).TakeWhile(c => c != '/').Reverse().ToArray());
var string = "qwe/qwe/qwe/qwe//qwe/some_numbers_here_blabla.exe";
var start = string.lastIndexOf("/");
var end = string.lastIndexOf("_");
var result = string.substring(start + 1, end);

注意:如果字符串在最后一個斜杠后沒有/或_,則上述代碼不處理錯誤

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM