2013-08-04 3 views
-7

Je sais que cela a été répondu à plusieurs reprises, mais je me demandais si quelqu'un pouvait m'apprendre l'approche la plus simple pour séparer une chaîne (séparée par des virgules), par exemple numéro de chaîne = 1,2,3, 4,5, 7,8,9,10Convertir des chaînes séparées par des virgules en plusieurs chaînes

tels que

1 
2 
3 
4 
5 
6 
7 
8 
9 
10 

après la séparation, je veux insérer dans la table que la base de données en ligne distincte (10 lignes) .Je veux demander comment je vais faire que? Si je dois les placer dans 10 variables? Juste obtenir un peu confus sur l'itération sur la chaîne!

+2

Dans quelle langue? Vous a tagué 3. – Borgleader

+0

je travaille dans vb.net – user2502561

Répondre

1

Vous pouvez utiliser la méthode string.Split(...) pour stocker tous les résultats dans un string array

Toutes vos langues contient de telles méthodes CHOISI

1

String.split retourne un tableau de chaînes

+0

j'ai briser la chaîne comme mots Dim() As String = string.split (« ») 'utiliser pour chaque boucle sur les mots et les afficher Dim mot chaîne pour chaque mot mots Response.Write (mot) suivant maintenant comment je l'ai divisé en une chaîne array..but comment insérer comme ligne – user2502561

+0

séparée au lieu d'imprimer à l'écran dans votre boucle d'insertion dans base de données – BlackICE

1

vous pouvez passer la chaîne séparée par des virgules à la base de données et ensuite seulement divisée. Si vous utilisez SQL, vous pouvez utiliser la fonction suivante

CREATE FUNCTION dbo.fnSplit(
    @sInputList VARCHAR(8000) -- List of delimited items 
    , @sDelimiter VARCHAR(8000) = ',' -- delimiter that separates items 
) RETURNS @List TABLE (item VARCHAR(8000)) 

BEGIN 
DECLARE @sItem VARCHAR(8000) 
WHILE CHARINDEX(@sDelimiter,@sInputList,0) <> 0 
BEGIN 
SELECT 
    @sItem=RTRIM(LTRIM(SUBSTRING(@sInputList,1,CHARINDEX(@sDelimiter,@sInputList,0)-1))), 
    @sInputList=RTRIM(LTRIM(SUBSTRING(@sInputList,CHARINDEX(@sDelimiter,@sInputList,0)+LEN(@sDelimiter),LEN(@sInputList)))) 

IF LEN(@sItem) > 0 
    INSERT INTO @List SELECT @sItem 
END 

IF LEN(@sInputList) > 0 
INSERT INTO @List SELECT @sInputList -- Put the last item in 
RETURN 
END 
GO 
+1

ne le faites pas si vous pouvez l'éviter. Les serveurs SQL sont meilleurs pour les opérations définies et non pour les boucles itératives – BlackICE

1

Le code ci-dessous divise la chaîne sur la base de delimiter. Vous pouvez définir StringSplitOptions pour ignorer les entrées vides ou ajouter les entrées vides au tableau de chaînes.

//C# 
String sentence = "1,2,3,4,5,6,7,8,9"; 
String[] delim = {","}; 
String[] words = sentence.Split(delim,StringSplitOptions.RemoveEmptyEntries); 

Le code suivant est implémenté en C++. Il prend une ligne en entrée de l'utilisateur et utilise strtok pour séparer la chaîne en fonction des délimiteurs.

//C++ 
string line; 
char* word; 
getline(cin,line); 
word = strtok(const_cast<char*>(line.c_str())," "); 
while(word) 
{ 
    //input this word in container of your choice 
    word = strtok(NULL," "); 
} 
1
Dim LineOfText As String = "1,2,3,4,5,6,7,8,9,10" 
Dim i As Integer 
Dim aryTextFile() As String 

aryTextFile = LineOfText.Split(",") 

For i = 0 To UBound(aryTextFile) 

MsgBox(aryTextFile(i)) 

Next i 
1

Je sais que 5 mois, mais juste au cas où vous avez besoin encore la réponse:

dim stringNumber as string = "1,2,3,4,5,6,7,8,9,10" 

Dim stringSpiltArray as string() 
If Not stringNumber Is Nothing And stringNumber.Length <> 0 Then 
    stringSpiltArray = stringNumber.Split(',') 
End If 

For Each str As String In stringSpiltArray 
    'insert into db 
Next 

Utilisez split() pour diviser votre chaîne et stocker les valeurs séparées dans un array.

Ensuite, utilisez une boucle for each pour chaque élément de la matrice.

1
Dim substr As String() = txtString.Text.Split(", ") 

For Each strnumber As Integer In substr 
    txtoutput.Text=strnumber & vbNewLine 
Next 
Questions connexes