Strings (Zeichenketten)
Realisieren Sie ein C-Programm, das eine Zeichenkette einliest,
aber nur die ersten 5 zulaessigen Zeichen erfasst. Zulaessig sollen nur
Buchstaben und Ziffern ( A-Z; a-z; 0-9 ) sowie die Sonderzeichen '.' ',' '-' sein.
Alle anderen Zeichen sollen ignoriert, d. h. nicht erfasst werden.
Hinweis:
Die Ueberpruefung soll nach Abschluss der kompletten Eingabezeile erfolgen ( durch {ENTER} o. {RETURN} )
und nicht schon waehrend der Eingabe der einzelnen Zeichen!
0 Kommentare
7 Lösung(en)
function validChars(str) {
str = str.replace(/[^A-Z^a-z^0-9^,^.^-]/g, '');
return str.substring(0, 5);
}
// test
console.log( validChars('Test') ); // Test
console.log( validChars('Test24') ); // Test2
console.log( validChars('Te$t24') ); // Tet24
console.log( validChars('TeSt!-4') ); // TeSt-
Lösung von: Lisa Salander (Heidi-Klum-Gymnasium Bottrop)
// NET 5.x; C# 9.x
using static System.Console;
using System.Collections.Generic;
using System.Text.RegularExpressions;
List<string> l = new() { "12test", "!123test", "t.est45!", "12**34!6" };
l.ForEach(x => WriteLine(string.Join("", new Regex(@"[a-zA-Z0-9\.\,\-]").Matches(x))[..5]));
Lösung von: Jens Kelm (@JKooP)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
int main(void) {
char buffer[30] = {};
char output[6] = {};
printf("Bitte Zeichenkette (max. 30 Zeichen) eingeben: ");
fgets(buffer, sizeof(buffer), stdin);
for (int i = 0, c = 0; i < 30 && c < 6; i++)
if (isalnum(buffer[i]) || buffer[i] == '.' || buffer[i] == ',' || buffer[i] == '-')
output[c++] = buffer[i];
output[5] = '\0';
printf("%s\n", output);
return 0;
}
Lösung von: Jens Kelm (@JKooP)
def get_valid_chars(s, n_chars=5):
def is_valid(char):
return 'A' <= char <= 'Z' or 'a' <= char <= 'z' or '0' <= char <= '9' or char in ('.', ',', '-')
out = ""
for char in s:
if not is_valid(char):
continue
out += char
if len(out) == n_chars:
return out
return out
print(get_valid_chars('Test')) # Test
print(get_valid_chars('Test24')) # Test2
print(get_valid_chars('Te$t24')) # Tet24
print(get_valid_chars('TeSt!-4')) # TeSt-
Lösung von: Name nicht veröffentlicht
import re
string=input("Eingabe: ")
print(''.join(re.findall('[A-Za-z0-9,.-]',string)[0:5]))
Lösung von: rob ert (tub)
' VBA
' "Microsoft VBScript Regular Expression x.x" einbinden
Const PAT_CHR As String = "[a-zA-Z0-9\.\, \-]"
Const NUM_STR As Integer = 5
Sub Main()
Dim reg As New RegExp
Dim arr_out(NUM_STR - 1) As String, chr As String
Dim arr_in As Variant, s As Variant
Dim k As Integer, i As Integer
arr_in = Array("12test", "!123test", "t.est45!", "12**34!6")
reg.Pattern = PAT_CHR
For Each s In arr_in
k = 0
For i = 1 To Len(s)
chr = Mid(s, i, 1)
If k < NUM_STR And reg.Test(chr) Then
arr_out(k) = chr
k = k + 1
End If
Next i
Debug.Print Join(arr_out, ", ")
Next
End Sub
Lösung von: Jens Kelm (@JKooP)
// C++ 14 | VS-2022
#include <iostream>
#include <string>
int main() {
std::string input{}, output{};
std::cout << "Bitte Zeichenkette eingeben: ";
std::getline(std::cin, input);
for (const auto& c : input) {
if (std::isalnum(c) || c == '.' || c == ',' || c == '-') {
output.push_back(c);
if (output.size() > 4) break;
}
}
std::cout << output << "\n";
}
Lösung von: Jens Kelm (@JKooP)
Aktionen
Neue Lösung hinzufügen
Bewertung
Durchschnittliche Bewertung: