de-vraag
  • Pytania
  • Tagi
  • Użytkownicy
Powiadomienia
Nagrody
Rejestracja
Po zarejestrowaniu się, będziesz otrzymywać powiadomienia o odpowiedziach i komentarzach do swoich pytań.
Zaloguj się
Brak tłumaczeń pasujących do Twojego wyszukiwania Jeśli masz już konto, zaloguj się, aby sprawdzić nowe powiadomienia.
Za dodane pytania, odpowiedzi i komentarze przewidziane są nagrody.
Więcej
Źródło
Edytuj
 krishna
krishna
Question

Sprawdź czy ciąg znaków zawiera inny ciąg znaków

Chcę znaleźć, czy ciąg znaków zawiera ","(przecinek) w nim. Czy mamy jakąś inną opcję niż czytanie char-by-char?

219 2013-03-23T09:08:03+00:00 3
Siddharth Rout
Siddharth Rout
Edytowane pytanie 19. lutego 2014 в 9:36
Programowanie
vba
string
To pytanie ma 1 odpowiedź w języku angielskim, aby je przeczytać zaloguj się na swoje konto.
Solution / Answer
 rene
rene
23. marca 2013 в 9:13
2013-03-23T09:13:09+00:00
Więcej
Źródło
Edytuj
#18876320

Użyj funkcji Instr.

Dim pos As Integer

pos = InStr("find the comma, in the string", ",")

zwróci 15 w poz.

Jeśli nie zostanie znaleziony, zwróci 0.

Jeśli potrzebujesz znaleźć przecinek za pomocą formuły Excela, możesz użyć funkcji =FIND(",";A1).

Zauważ, że jeśli chcesz użyć Instr do znalezienia pozycji łańcucha bez rozróżniania wielkości liter, użyj trzeciego parametru Instr i nadaj mu const vbTextCompare (lub tylko 1 dla die-hards).

Dim posOf_A As Integer

posOf_A = InStr(1, "find the comma, in the string", "A", vbTextCompare)

da ci wartość 14.

Zauważ, że musisz określić pozycję początkową w tym przypadku, jak podano w specyfikacji, którą połączyłem: Argument start jest wymagany, jeśli określono compare.

 cssyphus
cssyphus
Edytowana odpowiedź 8. sierpnia 2018 в 7:15
362
0
 LimaNightHawk
LimaNightHawk
14. lipca 2014 в 5:03
2014-07-14T17:03:24+00:00
Więcej
Źródło
Edytuj
#18876321

Istnieje również funkcja InStrRev, która robi to samo, ale rozpoczyna wyszukiwanie od końca tekstu do jego początku.

Per @rene's odpowiedź ...

Dim pos As Integer
pos = InStrRev("find the comma, in the string", ",")

...nadal zwracałby 15 do pos, ale jeśli ciąg ma więcej niż jeden z wyszukiwanego ciągu, jak słowo "the", to:

Dim pos As Integer
pos = InStrRev("find the comma, in the string", "the")

...zwróciłoby 20 do pos, zamiast 6.

22
0
Sinister Beard
Sinister Beard
7. sierpnia 2014 в 1:17
2014-08-07T13:17:32+00:00
Więcej
Źródło
Edytuj
#18876322

Opierając się na odpowiedzi Rene'a, mógłbyś również napisać funkcję, która zwracałaby albo TRUE, jeśli podłańcuch był obecny, albo FALSE, jeśli nie był'a:

Public Function Contains(strBaseString As String, strSearchTerm As String) As Boolean
'Purpose: Returns TRUE if one string exists within another
On Error GoTo ErrorMessage
    Contains = InStr(strBaseString, strSearchTerm)
Exit Function
ErrorMessage:
MsgBox "The database has generated an error. Please contact the database administrator, quoting the following error message: '" & Err.Description & "'", vbCritical, "Database Error"
End
End Function
15
0
Dodaj pytanie
Kategorie
Wszystkie
Technologia
Kultura / Rekreacja
Życie / Sztuka
Nauka
Profesjonalny
Biznes
Użytkownicy
Wszystkie
Nowy
Popularny
1
mohidil qodirova
Zarejestrowany 5 godzin temu
2
Jasur Fozilov
Zarejestrowany 19 godzin temu
3
Zuxriddin Muydinov
Zarejestrowany 1 dzień temu
4
Денис Анненский
Zarejestrowany 3 dni temu
5
365
Zarejestrowany 1 tydzień temu
BG
DE
EL
ES
FR
ID
IT
JA
KO
NL
PL
PT
RU
SK
TR
ZH
© de-vraag 2022
Źródło
stackoverflow.com
na podstawie licencji cc by-sa 3.0 z przypisaniem