logplus/DataOutput/src/tutouInfGenerator.cpp

795 lines
23 KiB
C++
Raw Normal View History

2025-10-29 17:23:30 +08:00
#include <qmap.h>
#include <qthread.h>
#include <qstringlist.h>
#include <tutouInfGenerator.h>
#include "slf.h"
#include "geometryutils.h"
//CGJtutouInfGenerator::CGJtutouInfGenerator(){}
//CGJtutouInfGenerator::~CGJtutouInfGenerator(){}
QString CGJtutouInfGenerator::wellName_Gen(QString wellName, QString name, bool needSum)
{
QString result;
QStringList wellNameNum_List;
int wellNameNumSum = 0;
bool hasName = true;
if(wellName == ""){
wellName = "00000000";
hasName = false;
}
QStringList wellName_List = wellName.split("");
int cutNum = 1;
if(wellName_List[wellName_List.size() - 2] == "") cutNum = 2;
for(int i = 1; i < wellName_List.size() - cutNum; i++){
result += "'" + wellName_List[i];
if(i + 1 != wellName_List.size())
result += "',";
QString nameNum = (wellName_List[i].contains(QRegExp("[\\x4e00-\\x9fa5]+"))) ? QString("2") : QString("1");
if(!hasName)
nameNum = "0";
wellNameNum_List.append(nameNum);
wellNameNumSum += nameNum.toInt();
}
//弥补14位
for(int i = 0; i < 14 - (wellName_List.size() - cutNum); i++)
{
result += "'0',";
}
result += "'";
if(needSum)
{
//result += QString("%1").arg(wellNameNumSum);
result += QString("9");
}
else
result += "0";
result += blanksWord(name);
result += " ";
for(int i = 0; i < wellNameNum_List.size(); i++){
result += " ";
result += wellNameNum_List[i];
result += ", ";
}
//弥补14位
for(int i = 0; i < 14 - (wellName_List.size() - cutNum); i++)
{
result += " 0,";
}
result += " 0\n";
return result;
}
QString CGJtutouInfGenerator::wellDate_2row_Gen(QString date, QString dateName, bool needTime)
{
bool rightDate = true;
QString yearW = "";
QString monthW = "";
QString dayW = "";
QString timeW = "";
QStringList last;
QStringList secRow;
QString year, month, day, time, temp = "";
QString result = "";
last = date.split(yearW);
if(splitTo2Finished(last)) {
year = last[0];
secRow.append(QString("%1").arg(strWordNum(year)));
temp = last[1];
}
else rightDate = false;
last = temp.split(monthW);
if(splitTo2Finished(last)) {
month = last[0];
secRow.append(QString("%1").arg(strWordNum(month)));
temp = last[1];
}
else rightDate = false;
last = temp.split(dayW);
if(splitTo2Finished(last)) {
day = last[0];
secRow.append(QString("%1").arg(strWordNum(day)));
temp = last[1];
}
else rightDate = false;
last = temp.split(timeW);
if(splitTo2Finished(last)) {
time = last[0];
secRow.append(QString("%1").arg(strWordNum(time)));
temp = last[1];
}
else{
time = QString("00");
secRow.append("2");
}
if(!rightDate){
if(needTime)
result = QString("0,'0',0,'0',0,'0',0,'0 " + dateName + "-------1'\n0,'0',0,'0',0,'0',0,'0 " + dateName + "----2'\n");
else
result = QString("0,'0',0,'0',0,'0 " + dateName + "-------1'\n0,'0',0,'0',0,'0 " + dateName + "----2'\n");
return result;
}
result = secRow[0] + ",'" + year + "',";
result += secRow[1] + ",'" + month + "',";
result += secRow[2] + ",'" + day;
if(needTime){
result += "',";
result += secRow[3] + ",'" + time;
}
if(needTime)
result += " " + dateName + "-------1'\n0,'0',0,'0',0,'0',0,'0 " + dateName + "----2'\n";
else
result += " " + dateName + "-------1'\n0,'0',0,'0',0,'0 " + dateName + "----2'\n";
return result;
}
QString CGJtutouInfGenerator::wellDateGen(QString date, QString dateName, bool needTime)
{
bool rightDate = true;
QString yearW = "";
QString monthW = "";
QString dayW = "";
QString timeW = "";
QStringList last;
QStringList secRow;
QString year, month, day, time, temp = "";
QString result = "";
last = date.split(yearW);
if(splitTo2Finished(last)) {
year = last[0];
secRow.append(QString("%1").arg(strWordNum(year)));
temp = last[1];
}
else rightDate = false;
last = temp.split(monthW);
if(splitTo2Finished(last)) {
month = last[0];
secRow.append(QString("%1").arg(strWordNum(month)));
temp = last[1];
}
else rightDate = false;
last = temp.split(dayW);
if(splitTo2Finished(last)) {
day = last[0];
secRow.append(QString("%1").arg(strWordNum(day)));
temp = last[1];
}
else rightDate = false;
last = temp.split(timeW);
if(splitTo2Finished(last)) {
time = last[0];
secRow.append(QString("%1").arg(strWordNum(time)));
temp = last[1];
}
else{
time = QString("00");
secRow.append("2");
}
if(!rightDate){
if(needTime)
result = QString("0,'0',0,'0',0,'0',0,'0 " + dateName + "'");
else
result = QString("0,'0',0,'0',0,'0 " + dateName + "'");
return result;
}
result = secRow[0] + ",'" + year + "',";
result += secRow[1] + ",'" + month + "',";
result += secRow[2] + ",'" + day;
if(needTime){
result += "',";
result += secRow[3] + ",'" + time;
}
result += blanksWord(dateName);
return result;
}
QString CGJtutouInfGenerator::Bushing_3_Gen(float* Bushing_Inside_Diameter, float* Bushing_Detpth)
{
QString result;
if(Bushing_Inside_Diameter[0] > -99 && Bushing_Detpth[0] > -99){
result += numWord(QString("%1").arg(setdec(ConvertDataByFloat(Bushing_Inside_Diameter[0]))), true, false, false);
result += numWord(QString("%1").arg(setdec(ConvertDataByFloat(Bushing_Detpth[0]))), true, false, false);
}
else
result += "0,'0',";
if(Bushing_Inside_Diameter[1] > -99 && Bushing_Detpth[1] > -99){
result += numWord(QString("%1").arg(setdec(ConvertDataByFloat(Bushing_Inside_Diameter[1]))), true, false, false);
result += numWord(QString("%1").arg(setdec(ConvertDataByFloat(Bushing_Detpth[1]))), true, false, false);
}
else
result += "0,'0',";
if(Bushing_Inside_Diameter[2] > -99 && Bushing_Detpth[2] > -99){
result += numWord(QString("%1").arg(setdec(ConvertDataByFloat(Bushing_Inside_Diameter[2]))), true, false, false);
result += numWord(QString("%1").arg(setdec(ConvertDataByFloat(Bushing_Detpth[2]))), false, false, true);
}
else
result += "0,'0";
result += blanksWord("套管");
return result;
}
QString CGJtutouInfGenerator::Diameter_3_Gen(float* Bit_Diameter, float* Bit_Depth)
{
QString result;
if(Bit_Diameter[0] > -99 && Bit_Depth[0] > -99){
result += numWord(QString("%1").arg(setdec(ConvertDataByFloat(Bit_Diameter[0]))), true, false, false);
result += numWord(QString("%1").arg(setdec(ConvertDataByFloat(Bit_Depth[0]))), true, false, false);
}
else
result += "0,'0',";
if(Bit_Diameter[1] > -99 && Bit_Depth[1] > -99){
result += numWord(QString("%1").arg(setdec(ConvertDataByFloat(Bit_Diameter[1]))), true, false, false);
result += numWord(QString("%1").arg(setdec(ConvertDataByFloat(Bit_Depth[1]))), true, false, false);
}
else
result += "0,'0',";
if(Bit_Diameter[2] > -99 && Bit_Depth[2] > -99){
result += numWord(QString("%1").arg(setdec(ConvertDataByFloat(Bit_Diameter[2]))), true, false, false);
result += numWord(QString("%1").arg(setdec(ConvertDataByFloat(Bit_Depth[2]))), true, false, false);
}
else
result += "0,'0',";
if(Bit_Diameter[3] > -99 && Bit_Depth[3] > -99){
result += numWord(QString("%1").arg(setdec(ConvertDataByFloat(Bit_Diameter[3]))), true, false, false);
result += numWord(QString("%1").arg(setdec(ConvertDataByFloat(Bit_Depth[3]))), false, false, true);
}
else
result += "0,'0";
result += blanksWord("钻头");
return result;
}
QString CGJtutouInfGenerator::tutouCurveGen(QString curveStr, QString curveName)
{
const int maxNum = 11;
QString result;
QStringList curveList = curveStr.split(" ");
/*
QStringList staticCurveList;
staticCurveList.append("高分辨率深感应");
staticCurveList.append("数字聚焦");
staticCurveList.append("深侧向");
staticCurveList.append("球型聚焦电阻率");
staticCurveList.append("浅侧向");
staticCurveList.append("密度");
staticCurveList.append("中子");
staticCurveList.append("声波");
staticCurveList.append("自然电位");
staticCurveList.append("井径");
staticCurveList.append("自然伽马");
QString tempCurveName = staticCurveList[0];
if(curveList.indexOf(tempCurveName) > 0) result += numWord(tempCurveName, true, false, false);
else result += zeroWord(tempCurveName, true, false, false);
tempCurveName = staticCurveList[1];
if(curveList.indexOf(tempCurveName) > 0) result += numWord(tempCurveName, false, false, true);
else result += zeroWord(tempCurveName, false, false, true);
result += blanksWord(curveName);
tempCurveName = staticCurveList[2];
if(curveList.indexOf(tempCurveName) > 0) result += numWord(tempCurveName, true, false, false);
else result += zeroWord(tempCurveName, true, false, false);
tempCurveName = staticCurveList[3];
if(curveList.indexOf(tempCurveName) > 0) result += numWord(tempCurveName, false, false, false);
else result += zeroWord(tempCurveName, false, false, false);
result += "\n";
tempCurveName = staticCurveList[4];
if(curveList.indexOf(tempCurveName) > 0) result += numWord(tempCurveName, true, false, false);
else result += zeroWord(tempCurveName, true, false, false);
tempCurveName = staticCurveList[5];
if(curveList.indexOf(tempCurveName) > 0) result += numWord(tempCurveName, false, false, false);
else result += zeroWord(tempCurveName, false, false, false);
result += "\n";
tempCurveName = staticCurveList[6];
if(curveList.indexOf(tempCurveName) > 0) result += numWord(tempCurveName, true, false, false);
else result += zeroWord(tempCurveName, true, false, false);
tempCurveName = staticCurveList[7];
if(curveList.indexOf(tempCurveName) > 0) result += numWord(tempCurveName, false, false, false);
else result += zeroWord(tempCurveName, false, false, false);
result += "\n";
tempCurveName = staticCurveList[8];
if(curveList.indexOf(tempCurveName) > 0) result += numWord(tempCurveName, true, false, false);
else result += zeroWord(tempCurveName, true, false, false);
tempCurveName = staticCurveList[9];
if(curveList.indexOf(tempCurveName) > 0) result += numWord(tempCurveName, false, false, false);
else result += zeroWord(tempCurveName, false, false, false);
for(int i = 0; i < curveList.size(); i++){
if(!staticCurveList.contains(curveList[i])){
result += ",";
result += numWord(curveList[i], false, false, false);
}
}
result += "\n";
tempCurveName = staticCurveList[10];
if(curveList.indexOf(tempCurveName) > 0) result += numWord(tempCurveName, true, false, false);
else result += zeroWord(tempCurveName, true, false, false);
*/
bool isFirst = true;
int fileNum = (curveList.size() > maxNum) ? 11 : curveList.size();
for(int i = 0; i < fileNum; i++)
{
if(isFirst)
result += numWord(curveList[i], true, false, false);
else{
result += numWord(curveList[i], false, false, false);
result += "\n";}
isFirst = !isFirst;
}
for(int i = 0; i < (maxNum - fileNum); i++)
{
if(isFirst)
result += zeroWord("0", true, false, false);
else{
result += zeroWord("0", false, false, false);
result += "\n";}
isFirst = !isFirst;
}
return result;
}
QString CGJtutouInfGenerator::curveGen(QString curveStr, QString curveName)
{
QString result;
QStringList curveList = curveStr.split(" ");
QString tempCurveName = "CBL";
if(curveList.indexOf(tempCurveName) > 0) result += numWord(tempCurveName, true, false, false);
else result += zeroWord(tempCurveName, true, false, false);
tempCurveName = "VDL";
if(curveList.indexOf(tempCurveName) > 0) result += numWord(tempCurveName, false, false, true);
else result += zeroWord(tempCurveName, false, false, true);
result += blanksWord(curveName);
tempCurveName = "CCL";
if(curveList.indexOf(tempCurveName) >= 0) result += numWord(tempCurveName, true, false, false);
else result += zeroWord(tempCurveName, true, false, false);
tempCurveName = "GR";
if(curveList.indexOf(tempCurveName) > 0) result += numWord(tempCurveName, false, false, false);
else result += zeroWord(tempCurveName, false, false, false);
result += "\n";
tempCurveName = "CAL";
if(curveList.indexOf(tempCurveName) > 0) result += numWord(tempCurveName, true, false, false);
else result += zeroWord(tempCurveName, true, false, false);
tempCurveName = "AC";
if(curveList.indexOf(tempCurveName) > 0) result += numWord(tempCurveName, false, false, false);
else result += zeroWord(tempCurveName, false, false, false);
result += "\n";
tempCurveName = "CAL2";
if(curveList.indexOf(tempCurveName) > 0) result += numWord(tempCurveName, true, false, false);
else result += zeroWord(tempCurveName, true, false, false);
tempCurveName = "AAC";
if(curveList.indexOf(tempCurveName) > 0) result += numWord(tempCurveName, false, false, false);
else result += zeroWord(tempCurveName, false, false, false);
result += "\n";
tempCurveName = "CAL2";
if(curveList.indexOf(tempCurveName) > 0) result += numWord(tempCurveName, true, false, false);
else result += zeroWord(tempCurveName, true, false, false);
tempCurveName = "AAC";
if(curveList.indexOf(tempCurveName) > 0) result += numWord(tempCurveName, false, false, false);
else result += zeroWord(tempCurveName, true, false, false);
tempCurveName = "SBT";
if(curveList.indexOf(tempCurveName) > 0) result += numWord(tempCurveName, false, false, false);
else result += zeroWord(tempCurveName, false, false, false);
result += "\n";
return result;
}
QString CGJtutouInfGenerator::voiceCurveGen()
{
QString result;
result += "3,'CBL',3,'CCL 声幅所用曲线'\n";
result += "0,'AC ',3,'CAL'\n";
result += "0,'CCL',0,'GR'\n";
result += "0,'AC',0,'CAL'\n";
return result;
}
QString CGJtutouInfGenerator::scale_noFile_Gen()
{
QString result;
result += "0,'0',0,'0',0,'0 自然伽马刻度'\n";
result += "0,'0',0,'0 声幅刻度',1,'声幅单位标志'\n";
result += "0,'0',0,'0 磁定位刻度'\n";
result += "0,'0',0,'0 井径刻度',0,'井径单位标志',0,'井径个数标志'\n";
result += "0,'0',0,'0 声波刻度',0,'声波单位标志'\n";
result += "0,'0',0,'0 声波变密度刻度'\n";
return result;
}
QString CGJtutouInfGenerator::scale_Gen(QMap<QString, QStringList> pltMap)
{
QString result;
if(pltMap.find("GR") == pltMap.end()){
result += "0,'0',0,'0',0,'0 自然伽马刻度'\n";
}
else{
result += numWord(pltMap["GR"][0], true, false, false);
result += numWord(pltMap["GR"][1], true, false, false);
result += zeroWord("0", false, false, true);
result += blanksWord("自然伽马刻度");
}
if(pltMap.find("CBL") == pltMap.end()){
result += "0,'0',0,'0 声幅刻度',1,'声幅单位标志'\n";
}
else{
result += numWord(pltMap["CBL"][0], true, false, false);
result += numWord(pltMap["CBL"][1], false, false, true);
result += blanksWord("声幅刻度", false);
result += ",1,'声幅单位标志'\n";
}
if(pltMap.find("CCL") == pltMap.end()){
result += "0,'0',0,'0 磁定位刻度'\n";
}
else{
result += numWord(pltMap["CCL"][0], true, false, false);
result += numWord(pltMap["CCL"][1], false, false, true);
result += blanksWord("磁定位刻度");
}
if(pltMap.find("CAL") == pltMap.end()){
result += "0,'0',0,'0 井径刻度',0,'井径单位标志',0,'井径个数标志'\n";
}
else{
result += numWord(pltMap["CAL"][0], true, false, false);
result += numWord(pltMap["CAL"][1], false, false, true);
result += blanksWord("井径刻度", false);
result += ",0,'井径单位标志',0,'井径个数标志'\n";
}
if(pltMap.find("AC") == pltMap.end()){
result += "0,'0',0,'0 声波刻度',0,'声波单位标志'\n";
}
else{
result += numWord(pltMap["AC"][0], true, false, false);
result += numWord(pltMap["AC"][1], false, false, true);
result += blanksWord("声波刻度", false);
result += ",0,'声波单位标志'\n";
}
if(pltMap.find("LVDL") == pltMap.end()){
result += "0,'0',0,'0 声波变密度刻度'\n";
}
else{
result += numWord(pltMap["LVDL"][0], true, false, false);
result += numWord(pltMap["LVDL"][1], false, false, true);
result += blanksWord("声波变密度刻度");
}
return result;
}
QString CGJtutouInfGenerator::techHeadGen(QString tech)
{
QString result;
if(tech == ""){
result = QString("0") + "," + QString("0") + ",";
result += "'技术说明: 总条数 行数'\n";
return result;
}
QStringList techList = tech.split("\n");
QStringList techNum = tech.split(QRegExp("[;.。]"));
result = QString("%1").arg(techNum.size()) + "," + QString("%1").arg(techList.size()) + ",";
result += "'技术说明: 总条数 行数'\n";
return result;
}
QString CGJtutouInfGenerator::techBodyGen(QString tech)
{
QString result;
if(tech != ""){
QStringList techList = tech.split(QRegExp("[;.。]"));
for(int i = 0; i < techList.size(); i++){
result += QString("%1").arg(i + 1);
result += numWord(techList[i].simplified(), false, true, false);
result += "\n";
}
}
else{
result += "0,0,'技术说明: 总条数 行数'\n\
1,18,''\n\
9,9,''\n\
2,28,'5611131721'\n";
}
result += "end\n";
result += "end\n";
return result;
}
QString CGJtutouInfGenerator::resultTu(QString word){
QString result;
word = word.toLower();
if(word == "porp")
result += "0";
else if(word == "protn")
result += "1";
else if(word == "tcra")
result += "2";
else
result += "0";
result += ",0 成果图 -- 成果图井径标志(选择:0 porp; 1 portn; 2 cra 选择:0 英制; 1公制)\n";
return result;
}
QString CGJtutouInfGenerator::zeroWord(QString word, bool needTailComma, bool needHeadComma, bool isTail)
{
QString result = "";
if(needHeadComma) result += ",0,"; //需要与前面有逗号连接符
else result += "0,";
result += "'" + word;
if(!isTail) result += "'";
if(needTailComma) result += ",";
return result;
}
QString CGJtutouInfGenerator::numWord(QString word, bool needTailComma, bool needHeadComma, bool isTail)
{
QString result = "";
int num = strWordNum(word);
word = (word == "") ? "0" : word;
if(needHeadComma) result += "," + QString("%1").arg(num) + ","; //需要与前面有逗号连接符
else result += QString("%1").arg(num) + ",";
result += "'" + word;
if(!isTail) result += "'";
if(needTailComma) result += ",";
return result;
}
QString CGJtutouInfGenerator::blanksWord(QString word, bool nextLine)
{
QString str = " " + word + "'";
if(nextLine) str += "\n";
return str;
}
QString CGJtutouInfGenerator::chaiFenRange(QString word, bool needTailComma, bool needHeadComma, bool isTail)
{
QString cf = "-";
QString result;
if(needHeadComma) result += ",";
if(word == ""){
if(isTail)
result += "0,'0',0,'0";
else
result += "0,'0',0,'0'";
}
else{
QStringList wordList = word.split(cf);
if(wordList.size() != 2){
if(isTail)
result += "0,'0',0,'0";
else
result += "0,'0',0,'0'";
}
else{
result += numWord(wordList[0], true, false, false);
result += numWord(wordList[1], false, false, isTail);
}
}
if(needTailComma) result += ",";
return result;
}
QString CGJtutouInfGenerator::tutouTailGen_1(){
QString result;
result += "0,'30',2,'60 井斜 第二刻度'\n\
2,'20',2,'7050 2.5 '\n\
0,'285',3,'435 '\n\
1,'4',2,'22 '\n\
0,'22',2,'40 '\n";
return result;
}
QString CGJtutouInfGenerator::tutouTailGen_2(){
QString result;
result += "2,'1011',2,'3536 微电极第二刻度'\n\
2,'3024',2,'80144 4 '\n\
4,'47003800',4,'3450800 '\n\
1,' (:0 ;1 )'\n";
/*
*/
return result;
}
QString CGJtutouInfGenerator::tutouTailGen_3(){
QString result;
result += "0,'150',3,'300 自然伽马 第二刻度'\n\
2,'60',3,'160 '\n\
0,'-90',2,'100 '\n\
1,'6 ',2,'16 '\n\
0,'16',2,'26 '\n\
2,'RDHRID ',6,''\n\
0,'100',6,'1000000000'\n\
2,'RSHRIM ',6,''\n\
0,'100',6,'1000000000'\n\
4,'MSFL RSFL ',8,''\n\
3,'100',6,'1000000000'\n\
0,'DEN',2,''\n\
3,'1.96',3,'2.96'\n\
3,'0.96',3,'1.96'\n\
0,'2.7',3,'3.7'\n\
0,'CNL',2,''\n\
2,'45 ',3,'-15'\n\
0,'105',2,'45 '\n\
2,'AC',2,''\n\
3,'150',2,'500 '\n\
0,'250',0,'150'\n\
0,'PE',10,''\n\
1,'0',2,'10'\n\
0,' 线(:0 zpi标准; 1 cli标准; 2 cli声波标准)'\n";
return result;
}
QString CGJtutouInfGenerator::tutouTailGen_4(){
QString result;
result += "0,' 放大曲线图标志(选择:0 微电极放大; 1 声波放大)'\n\
0,'10',2,'20 线'\n\
0,'5',2,'10 线'\n";
return result;
}
QString CGJtutouInfGenerator::tutouTailGen_5(){
QString result;
result += "0,' 河口采油厂图头标志(选择:0 常规图; 1 河口图)'\n\
3,'500',3'250 ()'\n\
3,'CRA ()'\n\
3,2,' ',11 ,'SAND'\n\
1,2,' ',16 ,'LIME'\n\
2,3,'',21 ,'DOLM'\n\
4,2,' ',32 ,'OTHR'\n\
2,2,' ',300,'GRAV'\n\
5,3,'',26 ,'CONG'\n\
7,3,'',299,'TUFF'\n\
8,3,'',303,'ANDE'\n\
9,2,'',301,'BASD'\n\
10,2,'',44 ,'BASA'\n\
11,2,'',41 ,'GRWA'\n\
12,2,'绿',38 ,'GRAN'\n\
13,2,'',40 ,'ANHY'\n\
0,'(:0 ; 1 ; 2 )'\n\
0'cli5标志(:0 cli cli5; 1 cli5 cli)'\n\
0,'U Te K 线(:1 ; 0 )'\n\
0,'GRKT '\n\
0,'GKUT '\n\
0,'THOR TH '\n\
3,'-20',2,'10 TH '\n\
0,'10',2,'20 '\n\
0,'POAK K '\n\
1,'0',2,'10 K '\n\
0,'10',2,'20 '\n\
0,'URAN U '\n\
1,'0',2,'40 U '\n\
0,'40',2,'80 '\n";
return result;
}
QString CGJtutouInfGenerator::tutouTailGen_6(){
QString result;
result += "2,'水平图深度比例 (选择:0 1:500 1:1000)'\n\
0,'2000',4,'5000 '\n\
2,' (:0 1:500 1: 1:1000)'\n\
3,'100',3,'500 '\n\
0,'(:1 :2 :0 )'\n\
0,1,1,1,1,1,'( :0 :1 )'\n\
3,'R20 '3,'R07 线'\n\
4,''4,''\n\
0,' '2,''\n\
0,' '2,''\n\
0,'1000.3-2490.5 rmt '\n\
10,'800-2490.5 rmt '\n\
-9999\n\
end\n";
return result;
}
bool CGJtutouInfGenerator::splitTo2Finished(QStringList strList)
{
if(strList.size() != 2) return false;
if(strList[0] != "" || strList[1] != "") return true;
else return false;
}
int CGJtutouInfGenerator::strWordNum(QString str)
{
QStringList r = str.split("");
int result = r.size();
if(r.size() <= 2) return 0;
else return r.size() - 2;
}