C #으로 문자열에서 텍스트 찾기
문자열 내에서 주어진 텍스트를 어떻게 찾을 수 있습니까? 그 후에 그와 다른 것 사이에 새로운 문자열을 만들고 싶습니다. 예를 들어 ...
문자열이 다음과 같으면
This is an example string and my data is here
그리고 "my"와 "is"사이에있는 문자열을 만들고 싶습니다. 어떻게 할 수 있습니까? 미안하지만 이것은 꽤 유사하지만 이해가 되길 바랍니다.
이 기능을 사용하십시오.
public static string getBetween(string strSource, string strStart, string strEnd)
{
int Start, End;
if (strSource.Contains(strStart) && strSource.Contains(strEnd))
{
Start = strSource.IndexOf(strStart, 0) + strStart.Length;
End = strSource.IndexOf(strEnd, Start);
return strSource.Substring(Start, End - Start);
}
else
{
return "";
}
}
이것을 어떻게 사용 하는가:
string text = "This is an example string and my data is here";
string data = getBetween(text, "my", "is");
이것은 가장 간단한 방법입니다.
if(str.Contains("hello"))
Regex를 사용할 수 있습니다.
var regex = new Regex(".*my (.*) is.*");
if (regex.IsMatch("This is an example string and my data is here"))
{
var myCapturedText = regex.Match("This is an example string and my data is here").Groups[1].Value;
Console.WriteLine("This is my captured text: {0}", myCapturedText);
}
string string1 = "This is an example string and my data is here";
string toFind1 = "my";
string toFind2 = "is";
int start = string1.IndexOf(toFind1) + toFind1.Length;
int end = string1.IndexOf(toFind2, start); //Start after the index of 'my' since 'is' appears twice
string string2 = string1.Substring(start, end - start);
다음은 Oscar Jara의 기능을 모델로 사용하는 기능입니다.
public static string getBetween(string strSource, string strStart, string strEnd) {
const int kNotFound = -1;
var startIdx = strSource.IndexOf(strStart);
if (startIdx != kNotFound) {
startIdx += strStart.Length;
var endIdx = strSource.IndexOf(strEnd, startIdx);
if (endIdx > startIdx) {
return strSource.Substring(startIdx, endIdx - startIdx);
}
}
return String.Empty;
}
이 버전은 텍스트를 최대 두 번 검색합니다. 시작 문자열 이전에만 발생하는 끝 문자열을 검색 할 때 Oscar 버전에서 throw되는 예외를 방지합니다 getBetween(text, "my", "and");
.
사용법은 동일합니다.
string text = "This is an example string and my data is here";
string data = getBetween(text, "my", "is");
다음과 같이 간결하게 할 수 있습니다.
string abc = abc.Replace(abc.Substring(abc.IndexOf("me"), (abc.IndexOf("is", abc.IndexOf("me")) + 1) - abc.IndexOf("size")), string.Empty);
@Prashant의 답변을 제외하고 위의 답변은 오답입니다. 답변의 "바꾸기"기능은 어디에 있습니까? OP는 "그 다음에는 저것과 다른 것 사이에 새로운 문자열을 만들고 싶습니다"라고 물었습니다.
@Oscar의 뛰어난 반응을 바탕으로 그의 기능을 "Search And Replace"
하나 의 기능으로 확장했습니다 .
@Prashant의 대답은 대체 작업이므로 OP에 의해 수락 된 대답이어야한다고 생각합니다.
어쨌든, 나는 내 변형이라고 불렀다- ReplaceBetween()
.
public static string ReplaceBetween(string strSource, string strStart, string strEnd, string strReplace)
{
int Start, End;
if (strSource.Contains(strStart) && strSource.Contains(strEnd))
{
Start = strSource.IndexOf(strStart, 0) + strStart.Length;
End = strSource.IndexOf(strEnd, Start);
string strToReplace = strSource.Substring(Start, End - Start);
string newString = strSource.Concat(Start,strReplace,End - Start);
return newString;
}
else
{
return string.Empty;
}
}
static void Main(string[] args)
{
int f = 0;
Console.WriteLine("enter the string");
string s = Console.ReadLine();
Console.WriteLine("enter the word to be searched");
string a = Console.ReadLine();
int l = s.Length;
int c = a.Length;
for (int i = 0; i < l; i++)
{
if (s[i] == a[0])
{
for (int K = i + 1, j = 1; j < c; j++, K++)
{
if (s[K] == a[j])
{
f++;
}
}
}
}
if (f == c - 1)
{
Console.WriteLine("matching");
}
else
{
Console.WriteLine("not found");
}
Console.ReadLine();
}
string WordInBetween(string sentence, string wordOne, string wordTwo)
{
int start = sentence.IndexOf(wordOne) + wordOne.Length + 1;
int end = sentence.IndexOf(wordTwo) - start - 1;
return sentence.Substring(start, end);
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
using System.Diagnostics;
namespace oops3
{
public class Demo
{
static void Main(string[] args)
{
Console.WriteLine("Enter the string");
string x = Console.ReadLine();
Console.WriteLine("enter the string to be searched");
string SearchText = Console.ReadLine();
string[] myarr = new string[30];
myarr = x.Split(' ');
int i = 0;
foreach(string s in myarr)
{
i = i + 1;
if (s==SearchText)
{
Console.WriteLine("The string found at position:" + i);
}
}
Console.ReadLine();
}
}
}
다음은 문자열 내부의 텍스트 부분을 바꾸는 올바른 방법입니다 (Oscar Jara의 getBetween 메소드를 기반으로 함).
public static string ReplaceTextBetween(string strSource, string strStart, string strEnd, string strReplace)
{
int Start, End, strSourceEnd;
if (strSource.Contains(strStart) && strSource.Contains(strEnd))
{
Start = strSource.IndexOf(strStart, 0) + strStart.Length;
End = strSource.IndexOf(strEnd, Start);
strSourceEnd = strSource.Length - 1;
string strToReplace = strSource.Substring(Start, End - Start);
string newString = string.Concat(strSource.Substring(0, Start), strReplace, strSource.Substring(Start + strToReplace.Length, strSourceEnd - Start));
return newString;
}
else
{
return string.Empty;
}
}
는 string.Concat
3 개 문자열을 연결 :
- 대체 할 문자열 앞의 문자열 소스 부분을 찾았습니다.
strSource.Substring(0, Start)
- 대체 문자열-
strReplace
- 대체 할 문자열 뒤의 문자열 소스 부분을 찾았습니다.
strSource.Substring(Start + strToReplace.Length, strSourceEnd - Start)
If you know that you always want the string between "my" and "is", then you can always perform the following:
string message = "This is an example string and my data is here";
//Get the string position of the first word and add two (for it's length)
int pos1 = message.IndexOf("my") + 2;
//Get the string position of the next word, starting index being after the first position
int pos2 = message.IndexOf("is", pos1);
//use substring to obtain the information in between and store in a new string
string data = message.Substring(pos1, pos2 - pos1).Trim();
First find the index of text and then substring
var ind = Directory.GetCurrentDirectory().ToString().IndexOf("TEXT To find");
string productFolder = Directory.GetCurrentDirectory().ToString().Substring(0, ind);
Simply add this code:
if (string.Contains("search_text")) { MessageBox.Show("Message."); }
참고URL : https://stackoverflow.com/questions/10709821/find-text-in-string-with-c-sharp
'Programing' 카테고리의 다른 글
UINavigationBar에서 UIBarButtonItem의 위치 변경 (0) | 2020.11.19 |
---|---|
C # : 메모리 부족 예외 (0) | 2020.11.19 |
기존 테이블에 자동 증가 ID를 추가 하시겠습니까? (0) | 2020.11.19 |
B-tree faster than AVL or RedBlack-Tree? (0) | 2020.11.19 |
스크롤 뷰 내 레이아웃 하단에보기 추가 (0) | 2020.11.19 |