String 从powerbuilder中清除字符串

String 从powerbuilder中清除字符串,string,powerbuilder,String,Powerbuilder,我有绳子 'TEST1, TEST2, TEST3' 我想要 'TEST1,TEST2,TEST3' powerbuilder中的是一个类似于replace、substr之类的函数吗?当然有(您可以在帮助中轻松找到它),但它并没有太大帮助 它的原型是Replace(string1,start,n,string2),因此在调用它之前需要知道要替换的字符串的位置 这有一个常见的包装器,它包括在pos()/replace()上循环,直到没有东西可以替换为止。以下是全局函数的源代码: 函数对象的全局

我有绳子

'TEST1, TEST2, TEST3'
我想要

'TEST1,TEST2,TEST3'
powerbuilder中的是一个类似于replace、substr之类的函数吗?

当然有(您可以在帮助中轻松找到它),但它并没有太大帮助

它的原型是
Replace(string1,start,n,string2)
,因此在调用它之前需要知道要替换的字符串的位置

这有一个常见的包装器,它包括在
pos()
/
replace()
上循环,直到没有东西可以替换为止。以下是全局函数的源代码:

函数对象的全局类型replaceall
端型
正向原型
全局函数字符串替换全部(字符串作为\u源、字符串作为\u模式、字符串作为\u替换)
端部原型
全局函数字符串替换全部(字符串作为\u源、字符串作为\u模式、字符串作为\u替换)//将as_源中所有出现的as_模式替换为as_替换
字符串ls_目标
长i,j
ls_target=“”
i=1
j=1
做
i=位置(作为源,作为模式,j)
如果i>0,那么
ls_target+=mid(as_source,j,i-j)
ls_目标+=as_替换
j=i+len(如图所示)
其他的
ls_目标+=mid(作为_源,j)
如果结束
在i>0时循环
返回ls_目标
端函数
请注意,PB中的字符串函数(搜索和连接)没有那么有效,另一种解决方案是使用扩展提供的
FastReplaceall()
全局函数。它是一个C++版本的PB经典插件,版本从9到12。

当然有(你可以很容易在帮助中找到),但是它并不是很有帮助。 它的原型是

Replace(string1,start,n,string2)
,因此在调用它之前需要知道要替换的字符串的位置

这有一个常见的包装器,它包括在
pos()
/
replace()
上循环,直到没有东西可以替换为止。以下是全局函数的源代码:

函数对象的全局类型replaceall
端型
正向原型
全局函数字符串替换全部(字符串作为\u源、字符串作为\u模式、字符串作为\u替换)
端部原型
全局函数字符串替换全部(字符串作为\u源、字符串作为\u模式、字符串作为\u替换)//将as_源中所有出现的as_模式替换为as_替换
字符串ls_目标
长i,j
ls_target=“”
i=1
j=1
做
i=位置(作为源,作为模式,j)
如果i>0,那么
ls_target+=mid(as_source,j,i-j)
ls_目标+=as_替换
j=i+len(如图所示)
其他的
ls_目标+=mid(作为_源,j)
如果结束
在i>0时循环
返回ls_目标
端函数
请注意,PB中的字符串函数(搜索和连接)没有那么有效,另一种解决方案是使用扩展提供的
FastReplaceall()
全局函数。它是一个C++版本的PB经典插件,版本从9到12。
  long space, ll_a
     FOR ll_a = 1 to len(ls_string)
            space = pos(ls_string, " ")
            IF space > 0 THEN
            ls_string= Replace(ls_string, space, 1, "")
            END IF
     NEXT
我这样做:

  long space, ll_a
     FOR ll_a = 1 to len(ls_string)
            space = pos(ls_string, " ")
            IF space > 0 THEN
            ls_string= Replace(ls_string, space, 1, "")
            END IF
     NEXT

一种方法是使用数据库,因为您可能有一个活动连接

string ls_stringwithspaces = "String String String     String"
string ls_stringwithnospace = ""
string ls_sql = "SELECT  replace('" + ls_stringwithspaces + "', ' ', '')"

DECLARE db DYNAMIC CURSOR FOR SQLSA;
PREPARE SQLSA FROM :ls_sql USING SQLCA;

OPEN DYNAMIC db;
IF SQLCA.SQLCode > 0 THEN
       // erro handling
END IF
FETCH  db INTO :ls_stringwithnospace;
CLOSE db;

MessageBox("", ls_stringwithnospace)

一种方法是使用数据库,因为您可能有一个活动连接

string ls_stringwithspaces = "String String String     String"
string ls_stringwithnospace = ""
string ls_sql = "SELECT  replace('" + ls_stringwithspaces + "', ' ', '')"

DECLARE db DYNAMIC CURSOR FOR SQLSA;
PREPARE SQLSA FROM :ls_sql USING SQLCA;

OPEN DYNAMIC db;
IF SQLCA.SQLCode > 0 THEN
       // erro handling
END IF
FETCH  db INTO :ls_stringwithnospace;
CLOSE db;

MessageBox("", ls_stringwithnospace)

因此,如果源字符串不包含任何空格,您仍然在字符串上循环
len(ls\u string)
次,每次调用
pos()
?乌尔!因此,如果源字符串不包含任何空格,您仍然在字符串上循环
len(ls\u string)
次,每次调用
pos()
?乌尔!