#include <string>
template <typename List>
void split(const std::string& s, const std::string& delim, List& result) {
result.clear();
using string = std::string;
string::size_type pos = 0;
while(pos != string::npos ) {
string::size_type p = s.find(delim, pos);
if(p == string::npos) {
result.push_back(s.substr(pos));
break;
}
else {
result.push_back(s.substr(pos, p - pos));
}
pos = p + delim.size();
}
}
// ====== SAMPLE ======
#include <vector>
#include <iostream>
using namespace std;
int main(void) {
std::vector<string> result;
split("私の@@名前は@@太郎@@です@@", "@@", result);
for(auto s : result) {
cout << s << " / ";
}
}
object Main{
def split(str: String, delimiter: String): List[String] = {
val escPattern = """([*+.?{}()^$-|\[\]])""".r
val escDel = escPattern.replaceAllIn(delimiter, m => s"""\\\\${m.group(0)}""" )
val pattern = s"""(.*?)${escDel}(.*)""".r
str match {
case "" => List()
case pattern(w, res) => w :: split(res, delimiter)
case w => List(w)
}
}
def main(args: Array[String]): Unit = {
println(split("私の**名前は**太郎**です**", "**"))
}
}
object Main{
def split(str: String, delimiter: String): List[String] = {
val index = str indexOf delimiter
val dellen = delimiter.length
if(index == 0){
List()
} else if(index == -1){
List("")
} else {
str.take(index) :: split(str.drop(index + dellen), delimiter)
}
}
def main(args: Array[String]): Unit = {
println(split("私の@@名前は@@太郎@@です@@", "@@"))
}
}